Android四大元件中每個元件的作用是什麼?它們都可以開啟多程序嗎?
Activity
Activity可以開啟多程序android:process
用於顯示頁面與使用者互動,四大元件中唯一一個使用者可感知的元件,
1,生命週期
開啟方式通過startActivity,正常的生命週期為 onCreate onStart onResume onPause onStop onDestroy
onCreate和onDestroy是根據頁面建立和銷燬劃分的
onStart和onStop是根據頁面可見性劃分的 onRestart從onStop返回onStart
onResume和onPause是根據是否與使用者互動劃分的
不正常銷燬時比如橫豎屏切換,會呼叫onSavedInstanceState用來儲存頁面資訊,在恢復的時候呼叫onRestoreInstanceState也可呼叫onCreate恢復資料,但onCreate中Bundle的資料有可能是null,需要額外判斷,推薦使用onRestoreInstanceState
也可以通過android:configChanges屬性來配置,防止頁面不正常銷燬
2,啟動模式
Instance 正常都是這種啟動模式,一個一個往棧裡放就可以了
singleTop 棧頂複用模式,如果Activity A在棧頂了你在去啟動A的話那麼A就不會重建,而是會呼叫newInstance方法
singleTask 棧複用模式,一個棧中只能有一個物件,比如棧中ABC,A是這個模式下的,那麼我在啟動A,這貨會把BC都出棧,自己到棧頂,然後呼叫newInstance方法
singleInstance 一個棧就一個物件,唯我獨尊
3,這裡也可以聯想到Activity頁面的繪製,和Activity的啟動流程
BroadcastReceiver
android:process 同時需要配置許可權,還有android:exported="true"
廣播,可進行通知
1,註冊方式
靜態註冊:在清單中註冊,應用開不開啟都可接收
動態註冊:在程式碼中註冊。主要執行註冊程式碼後才能接收,記得解註冊
2,廣播分類
有序廣播,按優先順序有序傳輸,可攔截
無序廣播,不可攔截,所有接受者都可以接到
3,誇程序
Service
服務,可用於在後端開啟耗時操作,另外他也用於程序間通訊
可以配置android:process
1,開啟方式有兩種
startService
onCreate onStartCommand 多次startService onCreate只能呼叫一次,onStartCommand呼叫多次
bindService 程序間通訊需要這種開啟方式,unBindService解綁
onCreate onBind 多次呼叫bindService只會呼叫一次
ContentProvider
可配置android:process
誇程序提供資料包括但不限於應用資料庫中資料
設定了ContentProvider複寫增 刪 改 查也可監聽資料變動,應用起不起動都可呼叫ContentProvider
並且他是四大元件中唯一一個在應用啟動前呼叫onCreate的元件