Android基礎整理(一)

Android四大組件

Android學習思維導圖

一、Activity

Activity是一個Android應用程序組件(也稱為Android四大組件之一),它提供了一個屏幕,用戶可以通過該屏幕進行交互以執(zhí)行某些操作,例如撥打電話,拍照,發(fā)送電子郵件或查看地圖。每個活動都有一個窗口,用于繪制其用戶界面。

1.Activity的生命周期

onCreate()->onStart()->onResume()->[Activity is running]->onPause()->onStop()->onDestry()

onPause()->onRestart()->onStart()->onResume()->[Activity is running]

如圖:

Activity生命周期

2.Activity的啟動模式

(1)? standard

????? 標準啟動模式;

????? 如果一個Activity的啟動模式被設置成standard,那么它可以無限制的創(chuàng)建。你每一次通過Intent去啟動這種模式的Activity都會重新創(chuàng)建一個activity。

(2) singleTask

????? 在棧中唯一一個

????? 如果系統(tǒng)中已經(jīng)存在了該種啟動模式的目標Activity,則系統(tǒng)并不會重新創(chuàng)建一個目標Activity,而是首先將持有目標Activity的整個任務棧都會被置于前臺(用戶可見) 。

(3) singleTop

????? 在棧中最上面的一個

????? 如果在啟動這種模式的Activity的時候,當前任務棧的頂端已經(jīng)存在了相同的Activity,那系統(tǒng)就不會再創(chuàng)建新的,而是回調任務棧中已經(jīng)存在的該Activity的onNewIntent( )方法。

(4) singleInstance

????? 棧中唯一一個

????? 這種啟動模式和singleTask幾乎一樣,它也只允許系統(tǒng)中存在一個目標Activity,包括上面我們所說的SingleTask的一些特性singleInstance都有。唯一不同的是,持有目標Activity的任務棧中只能有目標Activity一個Actvitiy,不能再有別的Activity,對! 就是承包了這個任務棧。

3.Activity橫豎屏切換

(1)不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執(zhí)行1次,切豎屏時會執(zhí)行1次。

(2)設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執(zhí)行一次。

(3)設置Activity的android:configChanges="orientation|keyboardHidden|screenSize"時,切屏不會重新調用各個生命周期,只會執(zhí)行onConfigurationChanged方法。

(4)設置Activity的android:configChanges="orientation|keyboardHidden|screenSize"時,切屏切記要加上screenSize,否則4.0版本以上生命周期不生效。

4.Fragment生命周期

Fragment生命周期

5.Activity與Fragment生命周期對應


Activity與Fragment生命周期對應

? (1)onAttach( ):當Fragment與Activity綁定、關聯(lián)的時候調用;

(2)onCreateView( ):創(chuàng)建該Fragment對應的視圖,并把視圖返回給調用者,與onCreate( )的區(qū)別是你可以在onCreate( )中初始化與View無關的東西;

(3)onActivityCreated( ):在Activity完成其onCreate()方法后調用;

(4)onDestroyView( ):當Fragment銷毀視圖的時候調用;

(5)onDetach( ):當Fragment與Activity脫離關系的時候調用;


二、Service?

Service是Android的四大組件之一,它是用來進行后臺操作的,它并不為用戶提供界面,所有的操作都在后臺完成,它的所有操作對用戶都是不可見的。一旦其他的組件啟動了一個Service,它會在后臺一直運行,即便是用戶切換到了其他的應用中。其他的組件也可以綁定Service進而啟動一個Service,甚至可以用它來進行IPC(進程通信,inter process communication). Service可以進行的操作有很多,比如說網(wǎng)絡通信,音樂播放,文件的I/O操作,以及和Content Provider進行交互。

1.Service的生命周期

service的生命周期

2.Service的2種啟動方式

(1)startService()

通過startService啟動后,service會一直無限期運行下去,只有外部調用了stopService()或stopSelf()方法時,該Service才會停止運行并銷毀。

(2)bindService()

1.bindService啟動的服務和調用者之間是典型的client-server模式。調用者是client,service則是server端。service只有一個,但綁定到service上面的client可以有一個或很多個。這里所提到的client指的是組件,比如某個Activity。

2.client可以通過IBinder接口獲取Service實例,從而實現(xiàn)在client端直接調用Service中的方法以實現(xiàn)靈活交互,這里再通過startService方法啟動中是無法實現(xiàn)的。

3.bindService啟動服務的生命周期與其綁定的client息息相關。當client銷毀時,client會自動與Service解除綁定。當然,client也可以明確調用Context的unbindService()方法與Service解除綁定。當沒有任何client與Service綁定時,Service會自行銷毀

3.Service與IntentService的區(qū)別

IntentService是繼承并處理異步請求的一個類,在IntentService內有一個工作線程來處理耗時操作,啟動IntentService的方式和啟動傳統(tǒng)的Service一樣,同時,當任務執(zhí)行完后,IntentService會自動停止,而不需要我們手動去控制或stopSelf()。另外,可以啟動IntentService多次,而每一個耗時操作會以工作隊列的方式在IntentService的onHandleIntent回調方法中執(zhí)行,并且,每次只會執(zhí)行一個工作線程,執(zhí)行完第一個再執(zhí)行第二個,以此類推。

三、ContentProvider

ContentProvider一般為存儲和獲取數(shù)據(jù)提供統(tǒng)一的接口,可以在不同的應用程序之間共享數(shù)據(jù)。

參考:ContentProvider從入門到精通 (借用大神的)

四、BroadcastReceiver

參考:Android四大組件:BroadcastReceiver史上最全面解析(借用大神的)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容