Android中Activity的生命周期
每一個Android應用程序在運行時,都是一個單獨的進程,但是Android系統局限於手機畫面的大小與使用,不能把每一個運行中的應用程序窗口都顯示出來而是一次僅顯示一個應用程序窗口,所以Android使用了Activity的概念來表示界面。
每個對象都有一個從創建到銷毀的歷程,及該對象的生命周期。Activity也有其相應的生命周期。
Android系統會判斷應用程序Activity是屬於哪一個類,給予不同的Activity生命周期。
Activity的生命周期也是它所在進程的生命周期。
Activity生命周期的運行如圖:
Activity生命周期進程類型
在Android系統中,即使不關掉程序,當應用程序處於某種進程類時,也有可能被系統kill掉。
Android系統通過運行機制,依照哪些畫面或消息對使用者最重要以及當前內存使用狀況,而做出是否kill Activity的決定。
foreground process(前景模式)是當前顯示於手機屏幕上的應用程序畫面,被定義為前景模式的進程,其中由onCreate()、onStart() 、onResume() 函數調用的Activity都會變成foreground process正在運行的Activity。
visible process(可見模式):visible process最常發生的情況是當應用程序彈出對話框要與用戶交互時,原應用程序就會變成透明(不可見)的,而對話窗口就會變成前景。
當對話窗口退出後,原應用程序馬上就又變回原前景模式了。
在Activity窗口畫面變為透明時,就會由onPause()函數掌控進入暫停狀態。
當前景進程退出時,該Activity就會再度被拉到前景模式,由onResume() 函數喚醒。
background process是在Activity窗口畫面被其他Activity完全蓋掉,窗口畫面已經完全看不見時,則會進入onStop()停止狀態。
這種情況通常發生在兩個不同的應用程序開啟時,後開啟的應用程序會覆蓋掉原應用程序。
此時對background process Activity的處理有兩種選擇:一是直接被onDestroy()退出,該程序將完全關閉,無法再使用任何返回鍵回到該程序;另一個處理方式是當其他Activity需要內存時,這個background process會先被清除掉,釋放出內存。
如果使用者再度瀏覽剛剛被清除掉的background process,則Android系統會自動再運行onCreate()重新啟動該Activity,所以當系統需要內存時,就會暫時將背景進程清除,讓它變成empty process(空白模式) , 所以空白進程最重要的目的就是暫時釋放出內存,直到使用者再度喚醒該empty process Activity時,才會將空白進程變成前景進程。
(Service相關)service process(服務模式進程)是由startService()所產生的,雖然服務進程有點類似背景進程在背景狀態運行,但是它的運行等級和前景進程幾乎一樣高。
服務模式進程是持續運行的,雖然使用者看不到任何運行畫面,Android系統不會自動關閉此類的服務進程,除非使用者自行關閉。這部分內容可在Service詳解裡面再討論。
金字塔型的生命周期
推薦閱讀:
※Android滲透測試學習手冊(一)Android 安全入門
※安卓系統看HEiC
※Android 源代碼中增加新apk
※拯救卡頓的 Android 手機,全新的綠色應用公約你應該知道
TAG:Android |