作爲Android四大組件之一的activity 在開發的過程中,我們對其使用必不可少。所謂想要熟練使用一個知識點,必先深入瞭解其原理。那麼今天,我們就來聊聊關於Activity的生命週期吧~
一、什麼是activity?
1.通俗的說,一個activity就是一個屏幕。用於用戶與應用程序之間進行交互。
2.activity之間通過intent進行通信。
3.當你每創建一個activty,都必須要在AndroidManifest.xml配置文件中聲明,否則將無法識別並執行。
二、activity的生命週期
首先上一張圖。相信這張圖很多人都看見過,但是可能不是特別的理解,下面我就來一一介紹。
-
onCreate()。每個活動中我們都重寫了這個方法,所以大家應該都挺熟悉的。這個方法用於完成活動的初始化操作,比如加載佈局、綁定事件等。
-
onStart()。這個方法在活動由不可見變爲可見的時候調用。
-
onResume()。這個方法在活動準備好與用戶進行交互的時候調用。
-
onPause()。這個方法在系統準備去啓動或者恢復另一個活動的時候調用。
-
onStop()。這個方法在活動完全不可見的時候調用。
注:它與onPause()的主要區別在於,如果啓動的新活動是一個對話框式的活動,那麼onPause()方法會得到執行,而onStop()方法並不會執行。 -
onDestroy()。這個方法在活動被銷燬之前調用,之後活動的狀態也會變成銷燬狀態。
-
onRestart()。這個方法在活動由停止狀態變爲運行狀態調用,也就是活動被重新啓動了。
相信你看到這些可能還是有點懵逼~~ 那我們直接上代碼
三、代碼演示
如圖 我創建了兩個activity 以及其相對應的佈局文件。
NormalActivity主要是輸出一段話,DialogActivity也是如此,但是在AndroidManifest中,我給它設置了一個對話框的主題格式,已驗證onStop()與onPause()方法的不同。
再貼一個回調方法的代碼:
其他代碼較爲簡單,就不一一貼圖了。
四、演示分析
現在我們運行下程序:
觀察logcat中的打印日誌:
當MainActivity第一次被創建的時候,它會依次執行onCreate()、onStart()、onResume()方法,然後我們點擊第一個按鈕:
由於執行了另一個活動NormalActivity 所以onPause()和onStop()方法會執行。這時候我們按下返回鍵返回MainActivity:
由於之前MainActivity處於停止狀態,所以返回後,onRestart()方法會執行,然後依次執行onStart()和onResume()方法。但是這個時候onCreate()方法不會重新調用,因爲MainActivity沒有被重新創建。
然後我們點擊第二個按鈕,啓動DialogActivity:
彈出一個對話框。這時候我們觀察logcat:
這個時候我們發現,onPause()方法得到執行,onStop()方法沒有執行,因爲它僅僅只是一個標題框,並沒有完全的遮蓋MainActivity,所以MainActivity只是進入了暫停狀態,並沒有停止。這時候我們再點擊返回鍵:
只會執行onResume()方法,和我們想的一樣。
最後我們在MainActivity頁面點擊Back按鈕,退出程序:
依次執行onPause()、onStop()、onDestroy()方法,最後銷燬MainActivity。
這樣一個完整的Activity生命週期,我們就體驗了一遍呀~
感覺也是沒有什麼特別難的點,自己親手敲一遍代碼,會對這個過程印象更加深刻。
如果你還有什麼不明白的地方,請在評論區留言,我們可以探討一下,共同進步。