Activity四種啟動模式

2021-06-28 08:15:06 字數 1810 閱讀 9733

activity的啟動模式可以通過androidmanifest.xml檔案中的元素的屬性來指定,一共有4中模式:

android:name="activitymain"android:launchmode="singletask" >

1 standard

2 singletop

3 singletask

4 singleinstance

這4種模式又分兩類,standard和signletop屬於一類, singletask和signleinstance屬於另一類。

standard和singletop屬性的 activity 的例項可以屬於任何任務(task),並且可以位於activity堆疊的任何位置。比較典型的一種情況是,乙個任務的**執行 startactivity(),如果傳遞的 intent 物件沒有包含 flag_activity_new_task 屬性, 指定的 activity 將被該任務呼叫,從而裝入該任務的activity 堆疊中。 standard和singletop的區別在於:standard模式的activity在被呼叫時會建立乙個新的例項,所有例項處理同乙個 intent物件; 但對於singletop模式的activity,如果被呼叫的任務已經有乙個這樣的activity 在堆疊的頂端,那麼不會有新的例項建立, 任務會使用當前頂端的activity例項來處理intent物件,換句話說,如果被呼叫的任務包含乙個不在堆疊頂端的 singletop activity, 或者堆疊頂端為 singletop 的activity的任務不是當前被呼叫的任務,那麼,仍然會有乙個新的activity物件被建立。

singletask 和 singleinstance模式的activity 僅可用於啟動任務的情況, 這種模式的activity總是處在activity堆疊的最底端,並且乙個任務中只能被例項化一次。兩 者的區別在於:對於 singleinstance模式的activity, 任務的activity堆疊中如果有這樣的activity,那它將是堆疊中的唯一的 activity, 當前任務收到的 intent 都由它處理, 由它開啟的其他 activity 將在其他任務中被啟動; 對於 singletask模式的activity,它在堆疊底端,其上方可以有其他activity被建立, 但是,如果發給該activity的intent物件到來時該activity不在堆疊頂端,那麼該intent物件將被丟棄,但是介面還是會切換到當前 的activity。

在多activity開發中,有可能是自己應用間的activity 跳轉,或者夾帶其他應用的可復用activity。可能會希望跳轉到原來某個activity例項,而非產生多個重複的activity。我們可借助 activity 四種啟動模式來實現不同的需求:

standard 預設模式 --------- 來了intent,每次都建立新的例項。

singletop -------- 來了intent, 每次都建立新的例項,僅乙個例外:當棧頂的activity 恰恰就是該 activity的例項(即需要建立的例項)時,不再建立新例項。這解決了棧頂復用問題,想一想,你按兩次back鍵,退出的都是同乙個activity,這感覺肯定不爽。

singletask ---------- 來了intent後,檢查棧中是否存在該activity的例項,如果存在就把intent傳送給它,否則就建立乙個新的該activity的例項,放入 乙個新的task棧的棧底。肯定位於乙個task的棧底,而且棧中只能有它乙個該activity例項,但允許其他activity加入該棧。解決了在一 個task中共享乙個activity。

singleinstance ----------- 肯定位於乙個task的棧底, 並且是該棧唯一的activity。解決了多個task共享乙個activity。

Activity四種啟動模式

launchmode在多個activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的activity例項,是否重用已存在的activity例項,是否和其他activity例項公用乙個task裡。這裡簡單介紹一下task的概念,task是乙個具有棧結構的物件,乙個task可以管理多個acti...

Activity 四種啟動模式

activity有四種載入模式 standard 預設 singletop,singletask和 singleinstance。以下逐一舉例說明他們的區別 一 standard activity的預設載入方法,即使某個activity在task棧中已經存在,另乙個activity通過intent跳...

Activity四種啟動模式

我們介紹activity的四種啟動模式,分別為standard singletop singletask singleinstance,在androidmanifest.xml中的標籤的android launchmode屬性可以設定啟動模式。1 standard模式 standard是activi...