聯系方式:[email protected]
[android四大元件學習系列activity篇]
上一篇文章講了activity的定義、狀态和後退棧,現在講講activity的重點和難點——activity的生命周期。
activity生命周期的回調方法:


這些方法定義了activity完整的生命周期,實作這些方法,我們能監控activity生命周期中的三個嵌套循環(monitor three nested loops in the activity lifecycle)
1.activity的entire lifetime(全部的生命期)發生在
調用oncreate()和調用ondestory()之間。
在oncreate()方法中執行全局狀态的建立(例如定義布局),在ondestroy()方法中釋放所有儲存的資源。
2.activity的visible lifetime(可見的生命期)發生在
調用onstart()和onstop()之間。
在這個期間,使用者能在螢幕上看見activity,和它進行互動。
系統在activity的完整壽命中可能多次調用onstart()和onstop(),正如activity交替地對使用者可見或隐藏。
3activity的foreground lifetime (前台的生命期)發生在
調用onresume()和onpause()之間。
在這期間,activity在螢幕上所有其他activity的前面,有使用者輸入焦點。
一個activity能頻繁的在前台進入和出去之間轉變。
下面這張圖很好的講解了activity的生命周期和上面說的三種生命期:
下面通過一個demo來學習以下activity的生命周期:
demo很簡單,就隻有兩個activity,mainactivity和secondactivity和一個按鈕。點選按鈕,由mainactivity跳轉到secondactivity。
mainactivity:


secondactivity:
secondactivity
使用activity需要在manifest.xml檔案中注冊:
manifest.xml
1. 運作應用,mainactivity運作。
可以看出一個activity運作調用的回調方法是:oncreate()->onstart()->onresume()
2. 點選跳轉按鈕,由mainactivity跳轉到secondactivity:
1>secondactivity是dialog。
由于secondactivity是dialog,是以mainactivity依然可見,是以隻調用了它的onpause()方法。
2>若将secondactivity改為不是dialog(隻需在manifest.xml檔案中删掉 android:theme="@android:style/theme.dialog"這一行即可)
再點選跳轉按鈕:
對于mainactivity,由于不可見,狀态由運作變為停止。
依次調用了它的回調方法:onpause()->onstop()
3.activity處于運作狀态時,點選傳回按鈕。
點選傳回按鈕,activity由運作狀态變為死亡狀态,依次調用它的回調方法:onpause()->onstop()->ondestroy()
4.activity處于運作狀态,點選首頁按鈕,傳回桌面。
activity由運作狀态變為停止狀态,依次調用它的回調方法:onpause()->onstop()
5.activity處于停止狀态,即由桌面傳回到activity。
停止->運作,依次調用回調方法:onrestart()->onstart()->onresume()
6.activity處于運作狀态,旋轉螢幕:
可以看出,旋轉螢幕是一個銷毀activity然後重新建立activity的過程。
運作->暫停->停止->死亡->運作
依次調用回調方法:onpause()->onstop->ondestroy()->oncreate()->onstart()->onresume()
7.activity處于運作狀态,手機此時鎖屏。
可以看出,手機鎖屏,此時由于activity不可見,會進入停止狀态。
依次調用回調方法:onpause()->onstop()
8.當應用正在運作時,手機鎖屏,然後解鎖回到應用界面。
可以看出應用從停止狀态恢複到運作狀态。
依次調用回調方法:onrestart()->onstart()->onresume()
本人郵箱:[email protected],歡迎交流讨論。
如果喜歡,請點推薦!謝謝~