活動(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)不在處于棧頂念链,但是仍然可見時(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)不在處于棧頂进统,并且完全不可見的時(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)由不可見變成可見時(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)完全不可見的時(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)存的操作挥等。
-
可見生存期
- 活動(dòng)在onStart()和onStop()方法之間經(jīng)歷的就是可見生存期。
-
前臺(tái)生存期
- 活動(dòng)在onResume()和onPause()方法之間經(jīng)歷的就是前臺(tái)生存期堤尾。