溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

發(fā)布時(shí)間:2020-07-23 21:44:23 來(lái)源:網(wǎng)絡(luò) 閱讀:954 作者:kinbos 欄目:移動(dòng)開(kāi)發(fā)

【本博客內(nèi)的文章是本人的學(xué)習(xí)筆記總結(jié),如有錯(cuò)誤請(qǐng)各位批評(píng)指正,謝謝!歡迎加入群285077071討論】

關(guān)于Activity的生命周期的學(xué)習(xí),我將從以下幾個(gè)方面入手來(lái)全面認(rèn)識(shí):

一、什么是生命周期?

二、Activity生命周期的官方定義

三、Activity生命周期流程圖的理解

四、通過(guò)代碼來(lái)切身體驗(yàn)每一個(gè)周期函數(shù)的執(zhí)行時(shí)機(jī)

接下來(lái),讓我們開(kāi)始進(jìn)入正題吧。


一、什么是生命周期?

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

生命周期,通俗來(lái)講就是從生到死這一期間一系列的狀態(tài)。大家可能在其他語(yǔ)言中早已經(jīng)聽(tīng)說(shuō)了這一概念,比如C語(yǔ)言中變量的生命周期,iOS開(kāi)發(fā)中UIView的生命周期等。生命周期這個(gè)概念在不同的領(lǐng)域當(dāng)中大體講的差不多,只是劃分的狀態(tài)可能不同,有的劃分粒度大一些,有的劃分粒度要細(xì)一些。本文要講的生命周期從宏觀上來(lái)講就是上圖上所列舉的那樣:創(chuàng)建——>將要可見(jiàn)——>可見(jiàn)——>將要不可見(jiàn)——>銷(xiāo)毀。


二、Activity生命周期的官方定義

Activities in the system are managed as an activity stack. When a new activity is started, it is placed on the top of the stack and becomes the running activity -- the previous activity always remains below it in the stack, and will not come to the foreground again until the new activity exits.

官方意思大體是這樣Activity在系統(tǒng)中是通過(guò)Activity棧來(lái)進(jìn)行管理的,當(dāng)一個(gè)新的Activity被打開(kāi)時(shí),這個(gè)新的Activity就被放到棧的頂部并且保持運(yùn)行狀態(tài),但在其之前的那個(gè)Activity總是保留在這個(gè)新Activity的下面,并且只有當(dāng)這個(gè)新的Activity退出時(shí)原來(lái)的那個(gè)Activity才會(huì)重新回到前臺(tái)。

三、Activity生命周期流程圖的理解

讓我們一起來(lái)看一下官方的這個(gè)生命流程圖:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

該圖引用自:http://developer.android.com/reference/android/app/Activity.html

為方便說(shuō)明,在此我作了一點(diǎn)點(diǎn)的改動(dòng),其實(shí)也就是把注釋說(shuō)明換成中文而已了,哈哈。

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

Activity的生命周期函數(shù)的執(zhí)行時(shí)機(jī)都已經(jīng)在圖中作了簡(jiǎn)要說(shuō)明,在此就不在贅述。


四、通過(guò)代碼來(lái)切身體驗(yàn)每一個(gè)周期函數(shù)的執(zhí)行時(shí)機(jī)

1、當(dāng)我們啟動(dòng)應(yīng)用程序時(shí),生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

2、當(dāng)我們按下power鍵鎖屏?xí)r,生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

3、當(dāng)我們?cè)俅谓怄i回到界面時(shí),生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

4、當(dāng)我們點(diǎn)擊按鈕打開(kāi)一個(gè)新的Activity時(shí),生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

5、當(dāng)新打開(kāi)的Activity退出時(shí),生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

6、當(dāng)Activity退出時(shí),生命周期函數(shù)執(zhí)行順序如下:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

7、最后一點(diǎn),我們來(lái)驗(yàn)證下網(wǎng)上諸多網(wǎng)友博文中所說(shuō)的:“當(dāng)彈出Dialog時(shí)會(huì)執(zhí)行onPause()函數(shù)”這一說(shuō)法,這一說(shuō)法正確嗎?

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

當(dāng)Dialog彈出后我們來(lái)查看下輸出日志信息:

【Android學(xué)習(xí)總結(jié)】之Activity:深入理解、體驗(yàn)Activity的生命周期

從輸出日志我們可以發(fā)現(xiàn),在彈出Dialog時(shí)根本沒(méi)有執(zhí)行onPause()函數(shù),依然保持著可見(jiàn)狀態(tài)。所以,網(wǎng)絡(luò)上關(guān)于“當(dāng)彈出Dialog時(shí)會(huì)執(zhí)行onPause()函數(shù)”這一說(shuō)法是錯(cuò)誤的!


關(guān)于Activity生命周期的學(xué)習(xí)總結(jié),到此就告一段落了!歡迎各位批評(píng)指正!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI