简述activity的生命周期(activity生命周期)
推薦教程:Android教程
本文簡單介紹Activity生命周期,內容主要來自于官方文檔。
在簡述各個生命周期方法前,先總體做一下概述。我們可以從三個層面來監視Activity生命周期
完整生命周期:完整生命周期始于onCreate方法回調,止于onDestroy方法回調
可見周期:可見周期始于onStart方法回調,止于onStop方法回調
前臺周期:前臺周期始于onResume方法回調,止于onPause方法回調
下面簡單介紹一下各個生命周期方法:
onCreate 生命周期的第一個方法,表示Activity正在創建(啟動)。特別說明:若您在該方法內調用finish方法,則會立即出發onDestroy回調,其他生命周期不會執行
onRestart 該方法觸發的前提:onStop方法被調用。onStop方法被調用而導致的Activity不可見到Activity再次可見時被調用。該方法回調之后系統會相繼觸發onStart和onResume方法。
onStart Activity可見時調用(此時Activity尚未處于前臺):在onCreate方法之后或由onStop方法被調用而導致的Activity不可見到Activity再次可見時被調用
onResume 該方法的回調標識Activity處于前臺。官方文檔指明,這里比較適合動畫啟動及排他性設備訪問(如相機)等
onPause Activity即將進入后臺時回調此方法。需要特別注意的是,若Activity A啟動Activity B,則Activity A的onPause方法回調完成后,Activity B才會創建,因此不要在該回調方法中做耗時操作。
onStop Activity由可見到不可見時回調此方法
onDestroy 生命周期的最后一個方法,表示Activity即將被銷毀。官方文檔指明,在某些情況下,系統會簡單粗暴的殺掉Activity的宿主進程(如下文示意圖中的標注1),因此我們不應該依賴此方法做數據存儲工作,可在此方法中做資源釋放操作
下圖為官方文檔給出的示意圖
Activity生命周期示意圖
此圖很清晰嚴謹,但是官方文檔對各個生命周期回調方法的描述并不是很詳細,因此如果不認真研讀文檔,很難明白圖中的生命周期方法的走向,并可能對某些方法產生誤解。例如對于onStop方法,可能會有部分童鞋對其有誤解,誤認為Activity進入后臺時回調該方法,其實進入后臺時回調的是onPause方法,不可見時回調onStop方法;也有童鞋誤以為onResume方法回調意味著可以進行交互,其實我們應該以public void onWindowFocusChanged (boolean hasFocus)回調中的hasFocus參數為依據來判定是否可以進行交互。
Activity可見與否與其是否處于前臺是兩回事,onStart 與 onStop 配對描述Activity是否可見;onPause 與
onResume 配對描述Activity是否處于前臺。Activity可見并不意味著可以交互,同樣的其處于前臺也未必可以交互。直接的例子是,若Activity展示了Dialog,此時Activity仍處于前臺,但我們卻不能與Activity交互
另外,對于上述示意圖中的標注2走向,我相信很多人并沒有親自驗證過,因為通常你很難通過交互來復現這一場景。對于這種場景,我們可以通過代碼控制來模擬:Activity A啟動Activity B,在Activity B的onCreate方法中直接調用finish方法
以上就是簡述activity的生命周期的詳細內容,更多請關注風君子博客其它相關文章!
總結
以上是生活随笔為你收集整理的简述activity的生命周期(activity生命周期)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络语lsp什么意思 意义及用法是什么
- 下一篇: python阶乘函数怎么使用