這個(gè)文集中文章主要是自己在學(xué)習(xí)中記錄的重要知識(shí)點(diǎn),方便日后查閱。
一、正常生命周期
- 從當(dāng)前Activity啟動(dòng)一個(gè)新的Activity,若新的Activity使用的是透明主題,那么當(dāng)前Activity不會(huì)回調(diào)onStop。
- 當(dāng)前Activity A 啟動(dòng)新的Activity B 是先執(zhí)行A的onPause,在執(zhí)行B的onResume。
- onPause和onStop中都不能做重量級的操作。
二、異常生命周期
當(dāng)Activity在異常的情況下終止的(橫豎屏切換),onPause、onStop、onDestroy都會(huì)被調(diào)用,還會(huì)調(diào)用
onSaveInstanceState來保存當(dāng)前Activity的狀態(tài),改方法在onStop前調(diào)用。Activity重新創(chuàng)建后調(diào)用onRestoreInstanceState把Activity銷毀時(shí),保存的Bundle對象,作為參數(shù)傳遞給onRestoreInstanceState和onCreate方法來恢復(fù)數(shù)據(jù)。-
內(nèi)存不足時(shí)會(huì)殺死優(yōu)先級第的Activity,Activity優(yōu)先級分類自上到下:
- 前臺(tái)Activity,正在和用戶交互的Activity,優(yōu)先級最高
- 可見非前臺(tái)ACtivity,列如當(dāng)前Activity被對話框擋住,無法操作
- 后臺(tái)Activity,已經(jīng)被暫停的Activity。
如果不想重新創(chuàng)建Activity,可以給Activity指定
configChanges屬性。
三、Activity的LaunchMode
- 使用非Activity類型的Context(如ApplicationContext),去啟動(dòng)一個(gè)standard模式的Activity,會(huì)報(bào)錯(cuò)。因?yàn)閟tandard模式的Activity會(huì)進(jìn)入啟動(dòng)它的Activity所屬的任務(wù)棧中,而非Activity類型的沒有任務(wù)棧。解決方法:為新啟動(dòng)的Activity指定
FLAG_ACTIVITY_NEW_TASK模式。 - singleTop和singleTask都會(huì)回到onNewIntent。
- 在Intent設(shè)置的啟動(dòng)模式要優(yōu)先于AndroidMenifest設(shè)置隱式啟動(dòng)模式
-
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS具有這個(gè)標(biāo)記的Activity不會(huì)出現(xiàn)在歷史Activity的列表中。