[1] standard 模式
這是預設模式,每次啟用activity時都會建立activity例項,並放入任務棧中。
[2] singletop 模式
如果在任務的棧頂正好存在該activity的例項,就重用該例項( 會呼叫例項的 onnewintent() ),否則就會建立新的例項並放入棧頂,即使棧中已經存在該activity的例項,只要不在棧頂,都會建立新的例項。
[3] singletask 模式
如果在棧中已經有該activity的例項,就重用該例項(會呼叫例項的 onnewintent() )。重用時,會讓該例項回到棧頂,因此在它上面的例項將會被移出棧。如果棧中不存在該例項,將會建立新的例項放入棧中。
[4] singleinstance 模式
在乙個新棧中建立該activity的例項,並讓多個應用共享該棧中的該activity例項。一旦該模式的activity例項已經存在於某個棧中,任何應用再啟用該activity時都會重用該棧中的例項( 會呼叫例項的 onnewintent() )。其效果相當於多個應用共享乙個應用,不管誰啟用該 activity 都會進入同乙個應用中。
設定啟動模式的位置在 androidmanifest.xml 檔案中 activity 元素的 android:launchmode 屬性
應用場景
singletop適合接收通知啟動的內容顯示頁面。例如,某個新聞客戶端的新聞內容頁面,如果收到10個新聞推送,每次都開啟乙個新聞內容頁面是很煩人的。
從外界可能多次跳轉到乙個介面
singletask適合作為程式入口點。例如瀏覽器的主介面。不管從多少個應用啟動瀏覽器,只會啟動主介面一次,其餘情況都會走onnewintent,並且會清空主介面上面的其他頁面。
之前開啟過的頁面,開啟之前的頁面就ok,不再新建
singleinstance適合需要與程式分離開的頁面。例如鬧鈴提醒,將鬧鈴提醒與鬧鈴設定分離。singleinstance不要用於中間頁面,如果用於中間頁面,跳轉會有問題,比如:a -> b (singleinstance) -> c,完全退出後,在此啟動,首先開啟的是b。
launchMode使用詳解
standard是標準啟動模式,也是預設啟動模式,這種情況下,不管當前back stack 回退棧 中有沒有要啟動的activity例項,系統 都會將乙個新的activity例項放在棧頂。假設我們現在有兩個activity,乙個是mainactivity,另外乙個是mainactivity2,我們先...
Activity的LaunchMode應用場景思考
1.有哪幾種型別?分別有什麼用?standard,建立乙個新的activity。singletop,棧頂不是該型別的activity,建立乙個新的activity。否則,onnewintent。singletask,回退棧中沒有該型別的activity,建立activity,否則,onnewinte...
Android中的LaunchMode設定
1.設定android launchmode 2.launchmode singletop 表示當返回棧裡面頂棧存在已有的activity,而不會再建立。3.launchmode singletask 表示當返回棧裡面存在已有的activity,而不會再建立,而是直接將該activity放在棧頂,而...