android 知识点大全,Android基础知识总结(一)
1.面向對象(OOP):針對業務處理過程的實體及其屬性和行為進行抽象封裝以獲得高效清晰的邏輯單元劃分。
三大特性:①封裝(隱藏對象的屬性和實現細節,僅對外提供公共訪問方式,將變量隔離便于使用,提高代碼的服用小和安全性);②繼承(提高代碼的復用性,繼承是多態的前提);③多態(父類或接口定義的引用變量可以指向子類或具體實現類的形象,提高了程序的拓展性)。
五大原則:單一職責、開放封閉、里氏替換、依賴倒置、接口分離。
2.數據類型:byte 1個字符,short 、char2 個字符,int 、float 4個字符,long 、double 8個字符。
volatile是一個類型修飾符(type specifier)volatile的作用是作為指令關鍵字,確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值。(from百度)
volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。
在JDK1.7之前,switch語句僅支持byte、short、char、int,在JDK1.7之后,枚舉、字符串類型都可以,通過String.hashcode轉成int進行判斷。
String不可變原因:字符串常量池的需要;運行String對象緩存HashCode,提高效率;多線程安全。
String 轉integer的方法和原理
①Integer.parseInt(String str)調用Integer內部的;
②Integer.parseInt(String s, int radix)parseInt內部首先判斷字符串是否包含符號(-或者+),則對相應的negative和limit進行賦值,然后再循環字符串,對單個char進行數值計算
③Character.digit(char ch, int radix)?返回指定基數中字符表示的數值。函數肯定進入到0-9字符的判斷(相對于string轉換到int),否則會拋出異常,數字就是如上面進行拼接然后生成的int類型數值。
限定參數類型的上界:參數類型必須是T或T的子類型
super T> 限定參數類型的下界:參數類型必須是T或T的超類型
3.equal和==的區別:equal 比較對象,==比較原生類型
equal:存儲空間的值是否相同,字符串內容比較,值是否相同
==:是否為同一內存空間,內存空間是否相同,引用是否相同
如果一個類重寫了equals()方法,則一定也要重寫hashCode()方法,原因是:雖然equals()方法重寫可以保證正確判斷兩個對象在邏輯是否相同,但是hashCode()方法映射的物理地址是不相同的,依然會將邏輯上相同的兩個元素存入集合,但是第二個對象的內容會是Null.
4.字符串運行速度:StringBuilder > StringBuffer (線程安全)> String ,String為常量,其它為變量,所以運行慢。
StringBuffer對象則代表一個字符序列可變的字符串,當一個StringBuffer被創建以后,通過StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個字符串對象的字符序列。一旦通過StringBuffer生成了最終想要的字符串,就可以調用它的toString()方法將其轉換為一個String對象。StringBuffer對象是一個字符序列可變的字符串,它沒有重新生成一個對象,而且在原來的對象中可以連接新的字符串。
StringBuilder和StringBuffer基本相似,兩個類的構造器和方法也基本相同。不同的是:StringBuffer是線程安全的,而StringBuilder則沒有實現線程安全功能,所以性能略高
5.Queue 隊列:先進先出,Stack 棧:后進先出。Collect -->List/Set/Map
6.ListView機制:用到的適配器有ArrayAdapter、SimpleAdapter、BaseAdapter
BaseAdapter 重寫的方法getCount()、getItem()、getItemId()、getView(),每繪制一次就調用一次getView(),在getView()中將事先定好的layout布局確定顯示的效果并返回一個view對象作為一個item 顯示出來,getItem()、getItemId()在調用LIstView響應方法時調用。
7.Fragment生命周期
onAttach(): 完成Fragment和Activity的綁定,參數中的Activity即為要綁定的Activity,可以進行賦值等操作。
onCreate() : 完成Fragment的初始化
onCreateView() : 加載Fragment布局,綁定布局文件
onActivityCreated() : 表名與Fragment綁定的Activity已經執行完成了onCreate,可以與Activity進行交互操作。
onStart() : Fragment變為可見狀態
onResume() : Fragment變為可交互狀態
onPause(): Fragment變為不可交互狀態(不代表不可見)
onSaveInstanceState():保存當前Fragment的狀態。記錄一些數據,比如EditText鍵入的文本,即使Fragment被回收又重新創建,一樣能恢復EditText之前鍵入的文本。
onStop(): Fragment變為不可見狀態
onDestroyView() : 銷毀Fragment的有關視圖,但并未和Activity解綁,可以通過onCreateView()重新創建視圖。Fragment銷毀時或者ViewPager+Fragment情況下會調用
onDestroy() : 銷毀Fragment時調用
onDetach() : 解除和Activity的綁定。Fragmen銷毀最后一步。
8.四大引用類型
強引用:?是指創建一個對象并把這個對象賦給一個引用變量。?強引用有引用變量指向時永遠不會被垃圾回收,JVM寧愿拋出OutOfMemory錯誤也不會回收這種對象。
軟引用(SoftReference):如果一個對象具有軟引用,內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可用來實現內存敏感的高速緩存,比如網頁緩存、圖片緩存等。使用軟引用能防止內存泄露,增強程序的健壯性。SoftReference的特點是它的一個實例保存對一個Java對象的軟引用, 該軟引用的存在不妨礙垃圾收集線程對該Java對象的回收。也就是說,一旦SoftReference保存了對一個Java對象的軟引用后,在垃圾線程對 這個Java對象回收前,SoftReference類所提供的get()方法返回Java對象的強引用。另外,一旦垃圾線程回收該Java對象之 后,get()方法將返回null。
弱引用(WeakReference):弱引用也是用來描述非必需對象的,當JVM進行垃圾回收時,無論內存是否充足,都會回收被弱引用關聯的對象。在java中,用java.lang.ref.WeakReference類來表示。
虛引用(PhantomReference):虛引用和前面的軟引用、弱引用不同,它并不影響對象的生命周期。在java中用java.lang.ref.PhantomReference類表示。如果一個對象與虛引用關聯,則跟沒有引用與之關聯一樣,在任何時候都可能被垃圾回收器回收。要注意的是,虛引用必須和引用隊列關聯使用,當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會把這個虛引用加入到與之 關聯的引用隊列中。程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發現某個虛引用已經被加入到引用隊列,那么就可以在所引用的對象的內存被回收之前采取必要的行動。
對于強引用,我們平時在編寫代碼時經常會用到。而對于其他三種類型的引用,使用得最多的就是軟引用和弱引用,這2種既有相似之處又有區別。它們都是用來描述非必需對象的,但是被軟引用關聯的對象只有在內存不足時才會被回收,而被弱引用關聯的對象在JVM進行垃圾回收時總會被回收。
9.線程是進程的子集,一個進程可有多個線程。
線程間通訊方式:①共享變量;②管道;③handler;④runOnUiThread(Runnable);⑤view.post(Runnable)。
進程間通訊方式:①管道;②FIFO;③消息隊列;④信號量;⑤共享內存區;⑥套接字socket信號。
Activity間的通信方式:①Intent;②借助類的靜態變量;③借助全局變量/Application;④借助外部工具(SharedPreference、SQLite、File、剪貼板);⑤借助Service。
10.PackageManagerService APP安裝有關的service,WindowManagerService APP調用窗口相關的service,ActivityManagerService 系統的引導服務,支持應用進程的啟動、切換、調度、四大組件的啟動和管理。
自定義系統服務:在ServiceManager注冊,在Framework/base增加JNI,C++ 文件,在build 配置mk文件,全部編譯,才可調用。
總結
以上是生活随笔為你收集整理的android 知识点大全,Android基础知识总结(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android无法自动旋屏,Androi
- 下一篇: accept标头 php,解决PHP中缺