Activity生命周期示範
在“管理activity的生命周期”系列課程中,我們講解了activity的生命周期,官方網站上是有一個示範Demo的(下載下傳Demo),通過我的示範,來給大家講解一下activity的生命周期。
編譯運作工程,進入app,界面如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9s2Ri5WNXFWNk1mYohWblZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DO3UjMykTM3EDOwcDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
Activity A是主入口activity,是以顯示ActivityA的界面。Activity A顯示在前台,是以依次有3個生命周期回調方法被調用:onCreate() -> onStart() -> onResume()。
接下來,我們啟動B:
此時Activity B進入前台,狀态是運作,Activity A完全不可見,則進入背景,狀态是停止,他們兩個的生命周期方法都會被調用,調用順序如下圖所示:
請注意他們的調用順序,A.onPause()->B.onCreate()->B.onStart()->B.onResume()->A.onStop()。
大家注意到了吧,A.onStop()是在B完全顯示出來時才調用的,這就是為什麼把CPU密集型的釋放資源的動作放在onStop()裡進行,而不是放在onPause()裡進行,因為如果onPause()操作時間太長的話,會影響Activity B的及時顯示的。
現在結束B,如下圖所示:
此時A和B的生命周期方法調用順序如下:
由于B調用了finish()結束自己,是以B此時會被調用onDestroy(),且處于銷毀狀态。
在A的界面啟動一個對話框風格的activity時,會發生什麼呢?如下圖,啟動對話框:
由于對話框沒有填滿整個螢幕,是以A部分可見,它的onPause()回調被調用,目前處于暫停狀态。接着關閉對話框,如下圖:
A完全可見,則onResume()回調被調用,處于運作狀态。
以上就是Activity的生命周期的簡單示範,大家可以下載下傳下Demo,然後自己操作一下,就會明白了。