Activity生命週期

2022-06-10 18:15:07 字數 2108 閱讀 8369

所謂的典型的生命週期就是在有使用者參與的情況下,activity經歷從建立,執行,停止,銷毀等正常的生命週期過程。我們這裡先來介紹一下幾個主要方法的呼叫時機,然後再通過**層面來驗證其呼叫流程。 

oncreate

: 該方法是在activity被建立時**,它是生命週期第乙個呼叫的方法,我們在建立activity時一般都需要重寫該方法,然後在該方法中做一些初始化的操作,如通過setcontentview設定介面布局的資源,初始化所需要的元件資訊等。 

onstart

: 此方法被**時表示activity正在啟動,此時activity已處於可見狀態,只是還沒有在前台顯示,因此無法與使用者進行互動。可以簡單理解為activity已顯示而我們無法看見擺了。 

onresume

: 當此方法**時,則說明activity已在前台可見,可與使用者互動了(處於前面所說的active/running形態),onresume方法與onstart的相同點是兩者都表示activity可見,只不過onstart**時activity還是後台無法與使用者互動,而onresume則已顯示在前台,可與使用者互動。當然從流程圖,我們也可以看出當activity停止後(onpause方法和onstop方法被呼叫),重新回到前台時也會呼叫onresume方法,因此我們也可以在onresume方法中初始化一些資源,比如重新初始化在onpause或者onstop方法中釋放的資源。 

onpause

: 此方法被**時則表示activity正在停止(paused形態),一般情況下onstop方法會緊接著被**。但通過流程圖我們還可以看到一種情況是onpause方法執行後直接執行了onresume方法,這屬於比較極端的現象了,這可能是使用者操作使當前activity退居後台後又迅速地再回到到當前的activity,此時onresume方法就會被**。當然,在onpause方法中我們可以做一些資料儲存或者動畫停止或者資源**的操作,但是不能太耗時,因為這可能會影響到新的activity的顯示——onpause方法執行完成後,新activity的onresume方法才會被執行。 

onstop

: 一般在onpause方法執行完成直接執行,表示activity即將停止或者完全被覆蓋(stopped形態),此時activity不可見,僅在後台執行。同樣地,在onstop方法可以做一些資源釋放的操作(不能太耗時)。 

onrestart

:表示activity正在重新啟動,當activity由不可見變為可見狀態時,該方法被**。這種情況一般是使用者開啟了乙個新的activity時,當前的activity就會被暫停(onpause和onstop被執行了),接著又回到當前activity頁面時,onrestart方法就會被**。 

ondestroy

:此時activity正在被銷毀,也是生命週期最後乙個執行的方法,一般我們可以在此方法中做一些**工作和最終的資源釋放。 

下面我們通過程式來驗證上面流程中的幾種比較重要的情況,同時觀察生命週期方法的**時機。

關於activity的生命週期的解釋:

啟動activity:系統會先呼叫oncreate方法,然後呼叫onstart方法,最後呼叫onresume,activity進入執行狀態。

當前activity被其他activity覆蓋其上或被鎖屏:系統會呼叫onpause方法,暫停當前activity的執行。

當前activity由被覆蓋狀態回到前台或解鎖屏:系統會呼叫onresume方法,再次進入執行狀態。

當前activity轉到新的activity介面或按home鍵回到主屏,自身退居後台:系統會先呼叫onpause方法,然後呼叫onstop方法,進入停滯狀態。

使用者後退回到此activity:系統會先呼叫onrestart方法,然後呼叫onstart方法,最後呼叫onresume方法,再次進入執行狀態。

當前activity處於被覆蓋狀態或者後台不可見狀態,即第2步和第4步,系統記憶體不足,殺死當前activity,而後使用者退回當前activity:再次呼叫oncreate方法、onstart方法、onresume方法,進入執行狀態。

使用者退出當前activity:系統先呼叫onpause方法,然後呼叫onstop方法,最後呼叫ondestory方法,結束當前activity。

Activity生命週期

oncreate 設定activity所使用的布局檔案 按鈕繫結 等靜態設定操作 onstart 該activity能被我們看到的時候就會呼叫onstart onresume 能夠獲得使用者焦點 onpause 啟動另外乙個activity的時候就會呼叫第乙個activity的該方法 onstop ...

activity生命週期

乙個activity的啟動順序 oncreate onstart onresume 當另乙個activity啟動時 第乙個activity onpause 第二個activity oncreate onstart onresume 第乙個activity onstop 當返回到第乙個activity...

Activity 生命週期

activities 在系統中是以 activity 棧的形式被管理的。當乙個新的 activity 啟動時,它將會被放到棧的頂部並變成 running activity 上乙個activity 會被至於它的下面,在新 activity 存在期間它都不會到前端來。乙個 activity 有四個重要的...