android之activity的生命週期

2021-10-04 04:05:55 字數 1815 閱讀 8393

android developers 網上的activity的生命週期圖:

oncreate ---> onstart ---> onresume。
1)oncreate狀態觸發activity建立時觸發oncreate介面。

2)onstart狀態觸發

activity介面顯示出來時呼叫onstart介面,使用者可見,包含不完全顯示情況,即有另乙個activity在它上面,但沒有完全覆蓋住,使用者可以看到部分activity但不能與之互動。onstart()通常就是onstop()(也就是使用者按下了home鍵,activity變為後台後),之後使用者再切換回這個activity就會呼叫onrestart()而後呼叫onstart()。

3)onresume狀態觸發

當activity能夠與使用者互動時呼叫onresume介面,使用者可以獲取activity的焦點。onresume()是onpause()(通常是當前的acitivty被暫停了,比如被另乙個透明或者dialog樣式的activity覆蓋了),之後dialog取消,activity回到可互動狀態,呼叫onresume()。

onpause ---> onstop ---> ondestroy
1) onpause狀態觸發通過上圖的我們可以看出activity從running狀態跳轉到onpause狀態的原因是:another activity comes into the foreground,也就是說有另外乙個actvity被啟動並執行了。比如說當前mainactivity通過startactivity啟動了secondactivity(secondactivity未全部擋住mainactivity),那麼secondactivity就在ui檢視的最頂層了,而mainactivity不再是最頂層的activity了,此時就會onpause了,此時我們依稀還能看到mainactivity,只是mainactivity已經在其他activity之後了。與onresume介面對應。

2)onstop狀態觸發

當mainactivity完全被secondactivity擋住,完全看不見的時候,此時mainactivity就會onstop了。我們看看上圖從onpause到onstop的原因是:the activity is no longer visiable,也就是說此時mainactivity完全不可見了,比如當按下home鍵的時候,當前activity就會處於onstop的狀態。與onstart介面對應。

3)onpause和onstop狀態區別

從actvitiy的生命週期圖中,我們可以看出activity是可以停留在onpause和onstop這兩個狀態上的,並且可以相應的恢復。那麼何時停留在onpause,何時停留在onstop呢?

當mainactivity被擋住不再在最頂端但仍可以看到時,就是處於onpause狀態,此時恢復mainactivity為最頂端時會呼叫onresume介面;若mainactivity被擋住完全看不見時,就是處於onstop狀態,此時恢復顯示mainactivity時會呼叫onrestart()介面,接著呼叫onstart介面進行恢復。

4)ondestroy狀態觸發

activity被銷毀時呼叫,在activity中呼叫finish介面時會觸發ondestroy介面完全退出activity。與oncreate介面對應。

android基本程式單元Activity

activity提供了和使用者互動的視覺化介面,建立乙個activity一般都繼承了activity,覆蓋了activity的oncreat方法.在該方法中呼叫setcontentview的方法展示要顯示的檢視.呼叫findviewbyid方法例項化元件.activity只有在清單檔案中宣告才能使用...

android 顯式 隱式啟動activity

android啟動activity分為顯式啟動和隱式啟動。顯式啟動時,指定被啟動activity類,系統啟動被指定的activity類。隱式啟動時,指定action category,系統會拿action category去androidmanifest.xml中匹配,匹配的activity啟動。某...

listactivity與activity的區別

listactivity實際上是listview和activity的結合體。也就是說,乙個listactivity就是只包含乙個listview元件的activity。在listactivity類內部通過 來建立listview物件,因此,使用listactivity並不需要使用xml布局檔案來定義...