當前位置:首頁 » 安卓系統 » androidactivity生命

androidactivity生命

發布時間: 2024-04-27 07:33:48

Ⅰ 如何理解Android中Activity的三個「生命周期」

下圖是官方文檔里的Activity生命周期圖,其中彩色標出的四個框是Activity的四種狀態,當Activity的狀態改變時會觸發一個或多個onXXX()方法。


onCreate()

當Acitivity第一次被創建時觸發,一般在這里要做的事情包括創建視圖(setContentView())、向視圖填充必要的數據等等。

onRestart()

這個我比較少用到,按文檔上的介紹,如果Activity之前被stop過,那麼下一次onStart()方法之前會先觸發這個方法。

onStart()

只要Activity從不可見變成可見,就會觸發到這個方法,但被AlertDialog遮擋/顯示的情況不算在內。

onResume()

當Activity來到最上層的時候,也就是開始與用戶直接交互時,觸發這個方法。例如本來Activity被一個AlertDialog遮擋,當這個AlertDialog消失時,onResume()方法就被觸發。

onPause()

和onResume()的觸發條件剛好相反,如果Activity本來在最上層,當它要讓出最上層的位置時會觸發這個方法。onPause()和onResume()是被觸發最頻繁的兩個方法,所以在這里不應該執行過於消耗資源的方法。

onStop()

當有其他Activity覆蓋了當前Activity時,不論另一個Activity是新開始的還是從下層移至最上層的,當前Activity的onStop()方法都會被觸發。

onDestroy()

Activity生命周期的終點。有兩種情況會導致它被觸發:1)執行了Activity#finish()方法;2)Android系統由於資源不足等原因決定殺掉Activity所在進程。通過isFinishing()方法可以判斷出是哪種情況。在這個方法里,我們一般要做的事情是釋放Activity佔有的資源,例如後台正在進行的下載線程等等。

最後,舉個實際例子來說明,假設你有一個「首頁Activity」和一個「編輯頁Activity」。

•當用戶點擊首頁里的「開始編輯」按鈕時,首頁的onPause()->onStart()onStop()依次觸發,編輯頁的onCreate()->onStart()->onResume()依次觸發;(感謝James.H.Fu指出的錯誤)

•當用戶在編輯頁按下「返回」按鈕時,編輯頁的onPause()->onStop()依次觸發,之後首頁的onStart() -> onResume()依次觸發;

•這時用戶在首頁按下「返回」按鈕,首頁的onPause()->onStop()->onDestroy()依次觸發。

Ⅱ android寮鍙戜腑鐨凙ctivity鐢熷懡鍛ㄦ湡鏄浠涔淇濆瓨activity鐨勪竴浜涗俊鎮鍦ㄥ摢涓鐢熷懡鍛ㄦ湡鏂規硶涓

銆愮瓟妗堛戱細鍏辨湁涓冧釜鍛ㄦ湡鍑芥暟錛
void onCreate(Bundle savedInstanceState) 絎涓嬈″壋寤烘椂璋冪敤
void onStart() 琚鐢ㄦ埛鍙瑙佹椂璋冪敤
void onRestart() 褰揂ctivity澶勪簬stop鐘舵佸張琚閲嶆柊鍚鍔ㄦ椂璋冪敤
void onResume() 褰撹幏寰楃劍鐐瑰嵆鍙涓庣敤鎴蜂氦浜掓椂璋冪敤
void onPause() 褰撳け鍘葷劍鐐規椂璋冪敤
void onStop() 褰撲笉鍙瑙佹椂璋冪敤
void onDestroy() 褰撻攢姣佹椂璋冪敤

Ⅲ Android中,activity生命周期是指什麼

一個Android應用程序在運行時,對於底層的Linux Kernel而言都是一個單獨的進程,但是對於Android系統而言,因為局限於手機畫面的大小與使用的考慮,不能把每一個運行中的應用程序窗口都顯示出來。

所以通常手機系統的界面一次僅顯示一個應用程序窗口,Android使用了Activity的概念來表示界面。

運行中的應用程序分為五大類,分別是:

前景模式:foreground process

可見模式:visible process

背景模式:background process

空白模式:empty process

服務模式:service process

除了最後一個,貌似service process是Service的事情了。其他都與Activity相關。

Android系統會判斷應用程序Activity是屬於哪一個類,給予不同的Activity生命周期。

Activity的生命周期也是它所在進程的生命周期。

Activity生命周期的運行如圖:

Activity生命周期的每一個階段都表示為金字塔上的一個台階,當系統創建一個新的activity時,每一個回調函數都把activity的狀態網上挪一步。

金子塔的最頂層就是activity運行在前景模式下,用戶可與之交互。

當用戶離開activity時,系統調用另一些回調函數,將activity的狀態從金字塔中一步一步移下來。有些情況下,activity只移動一部分,並沒有完全到底,這些情況下仍然可以移動回頂部。

注意這些狀態中只有三個狀態是靜態(static)的,意味著activity只有在這三個狀態下能停留一段時間:

Resumed:foreground,用戶可交互running state

Paused:部分被遮擋,不能接收用戶輸入也不能執行代碼,另一個半透明或者小的activity正擋在前面。

Stopped:activity完全被遮擋,不能被用戶看到,activity被認為在background,當Stopped的時候,activity實例的狀態信息被保留,但是不能執行任何代碼。

其他狀態都是轉換狀態,系統會很快調用其他相應的回調函數離開這些狀態。比如系統調用onCreate()之後,會很快調用onStart(),之後是onResume()。

相信不少朋友也已經看了以上的分析之後,也基本了解了Activity生命周期的幾個過程,我們就來說一說這幾個過程。

1.啟動Activity:系統會先調用onCreate方法,然後調用onStart方法,最後調用onResume,Activity進入運行狀態。

2.當前Activity被其他Activity覆蓋其上或被鎖屏:系統會調用onPause方法,暫停當前Activity的執行。

3.當前Activity由被覆蓋狀態回到前台或解鎖屏:系統會調用onResume方法,再次進入運行狀態。

4.當前Activity轉到新的Activity界面或按Home鍵回到主屏,自身退居後台:系統會先調用onPause方法,然後調用onStop方法,進入停滯狀態。

5.用戶後退回到此Activity:系統會先調用onRestart方法,然後調用onStart方法,最後調用onResume方法,再次進入運行狀態。

6.當前Activity處於被覆蓋狀態或者後台不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而後用戶退回當前Activity:再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。

7.用戶退出當前Activity:系統先調用onPause方法,然後調用onStop方法,最後調用onDestory方法,結束當前Activity。

有關於Activity的生命周期是Android中最基礎和最重要的知識,如果你想系統的了解一下Activity的生命周期,推薦你可以去一個叫做秒秒學的教程網站上看看。

熱點內容
安卓手機java模擬器 發布:2024-05-07 12:43:07 瀏覽:912
c語言java哪個好學 發布:2024-05-07 12:35:16 瀏覽:334
奧特曼訪問 發布:2024-05-07 12:34:38 瀏覽:893
離線存儲本地存儲 發布:2024-05-07 12:30:23 瀏覽:412
win764sql2000安裝 發布:2024-05-07 12:18:07 瀏覽:77
beego上傳文件 發布:2024-05-07 11:59:20 瀏覽:211
安卓如何設置拒接來電 發布:2024-05-07 11:56:25 瀏覽:570
銳志丐版有哪些配置 發布:2024-05-07 11:50:23 瀏覽:325
虛擬usb加密狗安裝 發布:2024-05-07 11:41:14 瀏覽:867
武漢中南醫院無線網密碼是多少 發布:2024-05-07 11:20:22 瀏覽:357