【Android學習總結】之Activity:深入理解、體驗Activity的生命週期

【本博客內的文章是本人的學習筆記總結,如有錯誤請各位批評指正,謝謝!歡迎加入羣285077071討論】

關於Activity的生命週期的學習,我將從以下幾個方面入手來全面認識:

一、什麼是生命週期?

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

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

四、通過代碼來切身體驗每一個周期函數的執行時機

接下來,讓我們開始進入正題吧。


一、什麼是生命週期?


生命週期,通俗來講就是從生到死這一期間一系列的狀態。大家可能在其他語言中早已經聽說了這一概念,比如C語言中變量的生命週期,iOS開發中UIView的生命週期等。生命週期這個概念在不同的領域當中大體講的差不多,只是劃分的狀態可能不同,有的劃分粒度大一些,有的劃分粒度要細一些。本文要講的生命週期從宏觀上來講就是上圖上所列舉的那樣:創建——>將要可見——>可見——>將要不可見——>銷燬。


二、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在系統中是通過Activity棧來進行管理的,當一個新的Activity被打開時,這個新的Activity就被放到棧的頂部並且保持運行狀態,但在其之前的那個Activity總是保留在這個新Activity的下面,並且只有當這個新的Activity退出時原來的那個Activity纔會重新回到前臺。

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

讓我們一起來看一下官方的這個生命流程圖:


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

爲方便說明,在此我作了一點點的改動,其實也就是把註釋說明換成中文而已了,哈哈。


Activity的生命週期函數的執行時機都已經在圖中作了簡要說明,在此就不在贅述。


四、通過代碼來切身體驗每一個周期函數的執行時機

1、當我們啓動應用程序時,生命週期函數執行順序如下:


2、當我們按下power鍵鎖屏時,生命週期函數執行順序如下:


3、當我們再次解鎖回到界面時,生命週期函數執行順序如下:


4、當我們點擊按鈕打開一個新的Activity時,生命週期函數執行順序如下:


5、當新打開的Activity退出時,生命週期函數執行順序如下:


6、當Activity退出時,生命週期函數執行順序如下:


7、最後一點,我們來驗證下網上諸多網友博文中所說的:“當彈出Dialog時會執行onPause()函數”這一說法,這一說法正確嗎?


當Dialog彈出後我們來查看下輸出日誌信息:


從輸出日誌我們可以發現,在彈出Dialog時根本沒有執行onPause()函數,依然保持着可見狀態。所以,網絡上關於“當彈出Dialog時會執行onPause()函數”這一說法是錯誤的!


關於Activity生命週期的學習總結,到此就告一段落了!歡迎各位批評指正!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章