Activity詳解(一)——典型生命周期分析

Activity的重要性,在Android的開(kāi)發(fā)當(dāng)中不言而喻,作為四大組件當(dāng)中,使用最為頻繁的組件,有必要對(duì)它進(jìn)行一個(gè)全方面的了解和認(rèn)識(shí),下面我們通過(guò)一系列的文章對(duì)Activity進(jìn)行一個(gè)全面的了解和分析。

Activity典型情況下的生命周期

所謂典型的生命周期,就是指在有用戶(hù)參與的情況下,Activity所經(jīng)過(guò)的生命周期的改變。

如圖:


1)onCreate:表示Activity正在被創(chuàng)建,這是生命周期的第一個(gè)方法。在這個(gè)方法中我們可以做一些初始化工作,比如調(diào)用:setContentView去加載界面布局資源,初始化Activity所需數(shù)據(jù)等。

2)onRestart:表示Activity正在重新啟動(dòng)。一般情況下,當(dāng)當(dāng)前Activity從不可見(jiàn)重新變?yōu)榭梢?jiàn)狀態(tài)時(shí),onRestart就會(huì)被調(diào)用。這種情形一般是用戶(hù)行為所導(dǎo)致的,比如用戶(hù)按Home鍵切換到桌面或者用戶(hù)打開(kāi)一個(gè)新的Activity,這是當(dāng)前的Activity就會(huì)暫停,也就是onPause和onStop被執(zhí)行。接著用戶(hù)又回到了這個(gè)Activity,就會(huì)出現(xiàn)這種情況。

3)onStart:表示Activity正在被啟動(dòng),即將開(kāi)始,這時(shí)Activity已經(jīng)可見(jiàn)了,但是還沒(méi)有出現(xiàn)在前臺(tái),還無(wú)法和用戶(hù)交互。這個(gè)時(shí)候其實(shí)可以理解為Activity已經(jīng)顯示出來(lái)了,但是我們還看不到。

4)onResume:表示Activity已經(jīng)可見(jiàn)了,并且出現(xiàn)在前臺(tái)并開(kāi)始活動(dòng)。要注意這個(gè)和onStart的對(duì)比,雖然onStart和onResume表示Activity都已經(jīng)可見(jiàn)了,但是onStart的時(shí)候Activity還在后臺(tái),onResume的時(shí)候Activity才顯示到前臺(tái)。

5)onPause:表示Activity正在停止,正常情況下onStop就會(huì)被調(diào)用,在特殊情況下,如果這個(gè)時(shí)候快速地回到當(dāng)前Activity,那么onResume會(huì)被調(diào)用。此時(shí)可以做一些存儲(chǔ)數(shù)據(jù),停止動(dòng)畫(huà)等工作,但是注意這里不能太耗時(shí),因?yàn)檫@會(huì)影響到新Activity的顯示,onPause必須執(zhí)行完,新Activity的onResume才會(huì)執(zhí)行。

6)onStop:表示Activity即將停止,可以做一些稍微重量級(jí)的回收工作,同樣不能太耗時(shí)。

7)onDestroy:表示Activity即將被銷(xiāo)毀,這是Activity生命周期中的最后一個(gè)回調(diào),在這里,我們可以做一些回收工作和最終的資源釋放。

正常情況下,Activity的常用生命周期就只有上面7個(gè)。

典型情況說(shuō)明:

1)針對(duì)一個(gè)特定的Activity,第一次啟動(dòng),回調(diào)如下:onCreate——》onStart——》onResume。

2)當(dāng)用戶(hù)打開(kāi)一個(gè)新的Activity或者切換到桌面的時(shí)候,回調(diào)如下:onPause——》onStop

這里面有一個(gè)種特殊情況,如果新Activity采用了透明主題,那么當(dāng)前Activity不會(huì)回調(diào)onStop

3)當(dāng)用戶(hù)再次回到原Activity時(shí),回調(diào)如下:OnRestart——》onStart——》onResume

4)當(dāng)用戶(hù)按back鍵回退時(shí),回調(diào)如下:onPause——》onStop——》onDestroy

5)當(dāng)Activity被系統(tǒng)回收后再次打開(kāi),生命周期方法回調(diào)過(guò)程和1)一樣

6)從整個(gè)Activity生命周期來(lái)說(shuō),onCreate和onDestroy是配對(duì)的,分別標(biāo)識(shí)著Activity的創(chuàng)建和銷(xiāo)毀,并且只可能調(diào)用一次。從Activity是否可見(jiàn)來(lái)說(shuō),onStart和onStop是配對(duì)的,隨著用戶(hù)的操作或者設(shè)備屏幕的點(diǎn)亮和熄滅,這兩個(gè)方法可能被調(diào)用多次;從Activity是否在前臺(tái)來(lái)說(shuō),onResume和onPause配對(duì)的,隨著用戶(hù)操作或者設(shè)備屏幕的點(diǎn)亮或者熄滅這兩個(gè)方法可能被調(diào)用多次。

onStart和onStop是從Activity是否可見(jiàn)這個(gè)角度來(lái)回調(diào),而onResume和onPause是從Activity是否位于前臺(tái)這個(gè)角度來(lái)回調(diào)的。

不能再onPause中做重量級(jí)的操作,因?yàn)楸仨歰nPause執(zhí)行完以后新Activity才能onResume。在onPause和onStop都不能執(zhí)行耗時(shí)操作,尤其是onPause。這也意味著,我們應(yīng)當(dāng)盡量在onStop中做操作,從而使得新Activity盡快顯示出來(lái)并切換到前臺(tái)。


####歡迎關(guān)注公共號(hào)

![](https://upload-images.jianshu.io/upload_images/3258163-a5d26661ebcd43b0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 啟動(dòng)與銷(xiāo)毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會(huì)通過(guò)調(diào)用對(duì)...
    安卓Boy閱讀 1,877評(píng)論 3 5
  • Activity作為四大組件之一,是使用頻率最高的組件,也是直接為用戶(hù)提供主體的操作主件,基本上我們?cè)贏ndroi...
    倚欄靜望閱讀 684評(píng)論 0 0
  • 突然想你 在心里 深深的 還有腦海里 深深的 我愛(ài)你 真的 一直都是 愛(ài)上一個(gè)人 那便是多么美好的 不忍破碎的夢(mèng) ...
    輪回的狐貍閱讀 245評(píng)論 0 0
  • 生活中,我們大概都有個(gè)情緒沖動(dòng)的時(shí)候。 有時(shí)候看到別人火冒三丈,我們覺(jué)得不值一提 ,雞毛蒜皮沒(méi)小事也當(dāng)真?給別人講...
    TA76喜鳳兒閱讀 277評(píng)論 0 1
  • 第二章 第一節(jié) 第四段 “謝謝您,雖然我也很想得到幫助,只不過(guò)現(xiàn)在我的腦子很亂……” “不管是名字還是作者...
    雨象閱讀 252評(píng)論 0 0

友情鏈接更多精彩內(nèi)容