activity啟動模式

standard

標(biāo)準(zhǔn)啟動模式,也是Android的默認啟動模式。在這種模式下啟動的activity可以被多次實例化,即在一個任務(wù)中可以存在多個activity實例,每個實例都會處理一個Intent對象。如果Activity A的啟動模式為standard,并且A已經(jīng)啟動,在A中再次啟動Activity A,即調(diào)用startActivity(new Intent(this,A.class)),會在A的上面再次啟動一個A的實例,即當(dāng)前的棧中的狀態(tài)為A-->A。

singleTop

如果一個以singleTop模式啟動的activity的實例已經(jīng)存在于任務(wù)棧的棧頂,那么再次啟動這個activity時,不會創(chuàng)建新的實例,而是重用位于棧頂?shù)哪莻€實例,并且會調(diào)用該實例的onNewIntent()方法將Intent對象傳遞到這個實例中。

如果以singleTop模式啟動的activity的一個實例已經(jīng)存在于任務(wù)棧中,但是不在棧頂,那么它的行為和standard模式相同,也會創(chuàng)建多個實例。

singleTask

官方文檔上稱,如果一個activity的啟動模式為singleTask,那么系統(tǒng)總會在一個新的任務(wù)的最底部(root)啟動這個activity,并且被這個activity啟動的其它activity會和該activity同時存在于這個新任務(wù)中。如果系統(tǒng)中已經(jīng)存在一個這樣的activity則會重用這個實例,并且調(diào)用它的onNewIntent()方法。即,這樣的一個activity在系統(tǒng)中只會存在一個實例。

但是這種說法并不準(zhǔn)確,采用singleTask啟動目標(biāo)Activity時,可分三種情況:

1、如果將要開啟的目標(biāo)Activity不存在,系統(tǒng)將會創(chuàng)建目標(biāo)Activity實例,并將它放入Task棧頂。

2、如果將要啟動的目標(biāo)Activity已經(jīng)位于Task棧頂,此時與singleTop模式的行為相同。

3、如果將要啟動的目標(biāo)Activity已經(jīng)存在、但沒有位于Task棧頂,系統(tǒng)將會把位于該Activity上面的所有Activity移出Task棧,從而使得目標(biāo)Activity轉(zhuǎn)入棧頂。

singleInstance

總是在新的任務(wù)中開啟,并且這個新的任務(wù)中有且只有這一個實例,也就是說被該實例啟動的其他activity會自動運行于另一個任務(wù)中。當(dāng)再次啟動該activity的實例時,會重用已存在的任務(wù)和實例。并且會調(diào)用這個實例的onNewIntent()方法,將Intent實例傳遞到該實例中。和singleTask相同,同一時刻在系統(tǒng)中只會存在一個這樣的Activity實例。

說明:

這種加載模式下,系統(tǒng)保證無論從哪個Task中啟動目標(biāo)Activity,只會創(chuàng)建一個目標(biāo)Activity實例,并會使用一個全新的Task棧來裝載該Activity實例。

當(dāng)用singleInstance啟動目標(biāo)Activity時,分兩種情況:
1、當(dāng)將要啟動的目標(biāo)Activity不存在,系統(tǒng)會先創(chuàng)建一個全新的Task、再創(chuàng)建目標(biāo)Activity的實例,并將它加入新的Task的棧頂。

2、如果將要啟動的目標(biāo)Activity已經(jīng)存在,無論它位于哪個應(yīng)用程序中,無論它位于哪個Task中,系統(tǒng)將會把該Activity所在的Task轉(zhuǎn)到前臺,從而使用該Activity顯示出來。

采用該模式加載的Activity總是位于Task棧頂,所在Task只包含該Activity.

activity返回鍵退棧順序

首先是task順序,然后是task里activity的順序。
例如task0(A-B)task1(C-D),不管如何啟動的,退棧順序就是D-C-B-A.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容