Activity生命週期與啟動模式筆記
生命週期
1、有兩個Activity A和B,從A跳轉到B,然後在B中按返回鍵,返回A,兩者的生命週期變化如下:
2、在Activity A處於running狀態時,有電話打入:
這裡就需要注意,就存在兩種情形,如果來電提醒是以彈窗的形式出來的,如下圖:
此時Activity A還處於可見狀態,其生命週期如下:注意是在接聽電話後,不是在彈窗彈出時,彈窗彈出時是沒有反應的,可能跟具體的系統有關。
接聽電話後跳轉到通話介面:onPause
結束通話電話後返回Activity A:onResume
但是如果像下面這種,來電提醒是以一個新的介面形式出現的,如下圖:
此時Activity A處於不可見狀態了,其生命週期如下:
由於來電從Activity A跳轉到了來電提醒介面:onPause -> onStop
結束通話電話或者結束通話後返回Activity A:onRestart -> onStart -> onResume
3、在Activity A處於running狀態時點選電源按鈕熄屏再喚醒螢幕回到A,或者按下home鍵回到桌面再返回A,其生命週期都如下所示:
(1)onPause -> onStop
(2)onRestart -> onStart -> onResume
4、未設定Activity A的屬性,從豎屏狀態轉為橫屏狀態時,然後再轉換為豎屏狀態:
android:screenOrientation="portrait" //只豎屏
android:screenOrientation="landscape" //只橫屏
android:configChanges="orientation|keyboardHidden"
(跟蹤framework層程式碼,是由於google在android3.2中新增了screensize改變的通知,在轉屏的時候,不僅是orientation發生了改變,screensize同樣也發生了改變所以要新增“screenSize”)
啟動模式
使用android:launchMode=”standard|singleInstance|singleTask|singleTop”來控制Acivity任務棧,改變Activity的啟動模式。其中,具體的模式內容請參閱徹底弄懂Activity四大啟動模式
任務棧是一種後進先出的結構。位於棧頂的Activity處於焦點狀態,當按下back按鈕的時候,棧內的Activity會一個一個的出棧,並且呼叫其onDestory()方法。如果棧內沒有Activity,那麼系統就會回收這個棧,每個APP預設只有一個棧,以APP的包名來命名.
standard : 標準模式,每次啟動Activity都會建立一個新的Activity例項,並且將其壓入任務棧棧頂,而不管這個Activity是否已經存在。Activity的啟動三回撥(onCreate()->onStart()->onResume())都會執行。
singleTop : 棧頂複用模式.這種模式下,如果新Activity已經位於任務棧的棧頂,那麼此Activity不會被重新建立,所以它的啟動三回撥就不會執行,同時Activity的onNewIntent()方法會被回撥.如果Activity已經存在但是不在棧頂,那麼作用與standard模式一樣.
singleTask: 棧內複用模式.建立這樣的Activity的時候,系統會先確認它所需任務棧已經建立,否則先建立任務棧.然後放入Activity,如果棧中已經有一個Activity例項,那麼這個Activity就會被調到棧頂,onNewIntent(),並且singleTask會清理在當前Activity上面的所有Activity.(clear top)
singleInstance : 加強版的singleTask模式,這種模式的Activity只能單獨位於一個任務棧內,由於棧內複用的特性,後續請求均不會建立新的Activity,除非這個獨特的任務棧被系統銷燬了
Activity的堆疊管理以ActivityRecord為單位,所有的ActivityRecord都放在一個List裡面.可以認為一個ActivityRecord就是一個Activity棧
相關文章
- Activity生命週期與啟動模式模式
- Activity的生命週期和啟動模式模式
- Activity的生命週期和啟動模式詳解模式
- Android Activity的生命週期和啟動模式詳解Android模式
- View生命週期與Activity生命週期的關係View
- Activity生命週期
- Android開發藝術(1)——Activity的生命週期和啟動模式Android模式
- Android學習筆記04——Activity的生命週期Android筆記
- Android入門教程之Activity(生命週期,啟動...)Android
- 框架層理解Activity生命週期(APP啟動過程)框架APP
- Activity生命週期onDestroy
- Service的啟動、繫結,以及生命週期的筆記筆記
- Android Activity生命週期Android
- Activity生命週期總結
- react生命週期筆記React筆記
- Fragment生命週期筆記Fragment筆記
- 信管筆記-- 生命週期筆記
- Android Activity是如何啟動的?Activity的生命週期是如何呼叫的?Android
- 深入理解HarmonyOS UIAbility:生命週期、WindowStage與啟動模式探析UIWindows模式
- Activity 知識梳理(1) Activity生命週期
- 深入學習Activity生命週期
- [Android]Activity的生命週期Android
- activity的生命週期(總結)
- View和Activity的生命週期View
- Activity簡介及生命週期
- JSP筆記-生命週期JS筆記
- React筆記(元件生命週期)React筆記元件
- minjun信管筆記-- 生命週期筆記
- Android 元件系列-----Activity生命週期Android元件
- Activity生命週期深入理解2
- Android Activity生命週期詳解Android
- 關於activity的生命週期1
- activity生命週期的onPause和onStop
- React生命週期學習筆記React筆記
- React元件生命週期——精華筆記React元件筆記
- Android 開發藝術探索筆記之一 -- Android 的生命週期和啟動模式Android筆記模式
- 《Android藝術開發探索》學習筆記之Activity的生命週期Android筆記
- Activity橫豎屏切換生命週期