活動(dòng)的生命周期
深入理解活動(dòng)的生命周期:你的優(yōu)勢(shì)
- 可以寫出更加連貫流暢的程序。
- 合理管理應(yīng)用資源
- 更好的用戶體驗(yàn)
具體關(guān)于activity的生命啟動(dòng)模式這里有介紹
Activity啟動(dòng)模式
現(xiàn)在做個(gè)補(bǔ)充:
每個(gè)活動(dòng)在其生命周期中最多可能會(huì)有4中狀態(tài)
-
運(yùn)行
當(dāng)一個(gè)活動(dòng)位于返回棧的棧頂時(shí),這是活動(dòng)就處于運(yùn)行狀態(tài)。
-
暫停
當(dāng)一個(gè)活動(dòng)不在處于棧頂,但是仍然可見(jiàn)時(shí),這時(shí)活動(dòng)就進(jìn)入了暫停狀態(tài)。因?yàn)椴⒉皇敲總€(gè)活動(dòng),都占滿整個(gè)屏幕。
比如:對(duì)話框形式的活動(dòng)只會(huì)占用屏幕中間的部分區(qū)域。處于暫停狀態(tài)的活動(dòng)仍然是完全存活者的。
-
停止
當(dāng)一個(gè)活動(dòng)不在處于棧頂,并且完全不可見(jiàn)的時(shí)候,就進(jìn)入了停止?fàn)顟B(tài)。
-
銷毀
當(dāng)一個(gè)活動(dòng)從返回棧中一出后,就變成了銷毀狀態(tài)。
活動(dòng)的生存期

Activity類中定義的七個(gè)回調(diào)方法,覆蓋了活動(dòng)生命周期的每一個(gè)環(huán)節(jié)
onCreate()。它會(huì)在活動(dòng)第一次被創(chuàng)建的時(shí)候調(diào)用,你應(yīng)該在這個(gè)方法中完成活動(dòng)的初始化操作,比如加載布局,綁定事件。
onStart()。這個(gè)方法在活動(dòng)由不可見(jiàn)變成可見(jiàn)時(shí)調(diào)用。
onResume()。這個(gè)方法在活動(dòng)準(zhǔn)備好和用戶進(jìn)行交互的時(shí)候調(diào)用。此時(shí)活動(dòng)一定位于棧頂,并且處于運(yùn)行狀態(tài)。
onPause()。這個(gè)方法在系統(tǒng)準(zhǔn)備去啟動(dòng)或者恢復(fù)另一個(gè)活動(dòng)的時(shí)候調(diào)用。我們通常會(huì)再這個(gè)方法中獎(jiǎng)一些消耗cpu的資源釋放掉,以及保存一些關(guān)鍵數(shù)據(jù),但這個(gè)方法的執(zhí)行速度一定要快,不然會(huì)影響到新的棧頂活動(dòng)的使用。
onStop()。這個(gè)方法在活動(dòng)完全不可見(jiàn)的時(shí)候調(diào)用。它和onPause方法的主要區(qū)別于,如果啟動(dòng)的活動(dòng)是是一個(gè)對(duì)話框式的活動(dòng),那么onPause方法會(huì)得到執(zhí)行,而onStop方法并不會(huì)執(zhí)行。
onDestroy()。這個(gè)方法在活動(dòng)被銷毀之前調(diào)用,之后活動(dòng)狀態(tài)變?yōu)殇N毀狀態(tài)。
onRestart()。這個(gè)方法在活動(dòng)由停止?fàn)顟B(tài)變?yōu)檫\(yùn)行狀態(tài)之前調(diào)用,也就是活動(dòng)被重新啟動(dòng)了。
以上7個(gè)方法,除了onRestart()方法,其他都是兩兩相對(duì)。從而活動(dòng)又可以分為3種生存周期。
-
完整生存期
- 活動(dòng)在onCreate()和onDestroy()方法之間經(jīng)歷的就是完整生存期。一般情況下,一個(gè)活動(dòng)會(huì)在onCreate方法中完成各種初始化操作。而在onDestroy中完成釋放內(nèi)存的操作。
-
可見(jiàn)生存期
- 活動(dòng)在onStart()和onStop()方法之間經(jīng)歷的就是可見(jiàn)生存期。
-
前臺(tái)生存期
- 活動(dòng)在onResume()和onPause()方法之間經(jīng)歷的就是前臺(tái)生存期。