Activity的四個狀態及生命週期
首先,先讓我們來了解一下activity的四個狀態
Acvive/Running,一個新的Activity啟動入棧後,它便會處於螢幕的最前端,處於棧的最頂端,此時就處於可見狀態和使用者互動。
Paused當Activity被另一個透明或者Dialog樣式的Activity覆蓋時,它依然與視窗管理器保持連線,系統也繼續維護其內部狀態,它仍然可見,但它已經失去了焦點故不可與使用者互動。
Stopped狀態是當Activity被另外一個Activity覆蓋,失去焦點並處於不可見狀態。
Killed狀態是Activity被系統殺死回收或者沒有被啟動時的狀態
瞭解完Activity的四個狀態,我們再來了解生命週期就顯得比較容易理解了。
看完此圖,大家未免有點找不著北,別急,我們慢慢來講述。
首先Activity是繼承自ApplicationContext類,它擁有以下幾個方法可供我們重寫。
- onCreate() 主要用於初始化的操作
- onStart()
- onResume()
- onPause()
- onStop()
- onDestroy()
當我們開始建立一個Activity的時候,會從按照上述的順序執行下來,從onCreate()開始,再到onDestroy()
而當我們出現某事件,使得Activity從Paused狀態重新獲得焦點時時,則會從onResume()開始執行。
而當Activity從Stopped狀態重新回到棧的頂端與使用者互動時,則會呼叫onStart(),並開始繼續從onStart()處重新執行。
當Activity處於Paused與Stopped的狀態時,如果出現有些記憶體緊張的情況或者其他事件,Activity會被登出掉,從新開始。
以上圖所示的流程可重寫這些方法來驗證。可參考以下的連結來執行。原文部分參考以下連結: