Activity 生命週期的個人理解與四種啟動模式

2021-08-19 21:24:56 字數 2546 閱讀 9443

activity為android四大元件之一

activity被稱之為活動主要實用為實現使用者與程式之間的互動

接下來我們先來看activity生命週期流程圖:

activity在被我們進行操作時會在四種形態中相互切換

activity 的形態

active/running:

activity處於活動狀態,此時activity處於棧頂,是可見狀態,可與使用者進行互動。

paused

當activity失去焦點時,或被乙個新的非全屏的activity,或被乙個透明的activity放置在棧頂時,activity就轉化為paused狀態。但我們需要明白,此時activity只是失去了與使用者互動的能力,其所有的狀態資訊及其成員變數都還存在,只有在系統記憶體緊張的情況下,才有可能被系統**掉。

stopped

當乙個activity被另乙個activity完全覆蓋時,被覆蓋的activity就會進入stopped狀態,此時它不再可見,但是跟paused狀態一樣保持著其所有狀態資訊及其成員變數。

killed

當activity被系統**掉時,activity就處於killed狀態。

了解了activity的4種形態後,我們就來聊聊activity的生命週期。

oncreate:建立acticvity時執行該方法

onstart:啟動activity時執行該方法

onresume:重新執行activity 本生命週期每次執行activity都會被執行到 (當activity從暫停狀態被重新使用成為running形態都會重新呼叫onresume

onpause:為activity的暫停狀態 (當activity未被完全覆蓋或鎖屏時成為暫停狀態)

onstop:為activity的停止狀態 (當activity被完全覆蓋或進入到後台成為停止狀態)

onrestart:重新啟動acivity(當activity從停止狀態被重新使用成為running形態都會重新呼叫onrestart

)ondestroy:當activity退出或者被**是執行,僅執行一次

activity正常啟動順序:

activity: oncreate

activity: onstart

activity: onresume

activity正常退出順序:

activity: onpause

activity: onstop

activity: ondestroy

當我們認識了各個生命週期之後下面我們來了解一下當我們執行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的啟動模式

standard:每次啟用activity時(startactivity),都建立activity例項,並放入任務棧。

singletop:如果某個activity自己啟用自己,即任務棧棧頂就是該activity,則不需要建立,其餘情況都要建立activity例項。

singletask:模式使activity在整個應用程式中只有乙個例項。每次啟動activity時系統首先檢查棧中是否存在當前activity例項,如果存在則直接復用,並把當前activity之上所有例項全部出棧。例如:瀏覽器主介面

singleinstance:該模式的activity會啟動乙個新的任務棧來管理activity例項,並且該勢力在整個系統中只有乙個。無論從那個任務棧中    啟動該activity,都會是該activity所在的任務棧轉移到前台,從而使activity顯示。主要作用是為了在不同程式中共享乙個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 有四個重要的...