一:Standard的啟動模式
Standard是默認的模式每開始一個activity,就會在棧中加一個activity,相同的也會加,
所以加多少個,就要按多少次返回鍵才能回到最初的界面
二:singleTop的啟動模式
1.清單配置:
<activity
android:name="com.itcode.taskstack.SecondActivity"
android:label="@string/_second"
android:launchMode="singleTop">
</activity>
Singletop:如果任務棧的棧頂已經存在這個activity的實例,
不會創建新的activity,而是利用舊的activity實例
調用 舊的activity的onNewIntent()方法
2.作用:
避免一個糟糕的用戶體驗,如果這個界面已經被打開且在任務棧的棧頂,就不會重復開啟了
三:Singletask的啟動模式:
1.Androidfest配置:
<activity
android:name="com.itcode.taskstack.SecondActivity"
android:label="@string/_second"
android:launchMode="singleTask">
</activity>
2.作用:
singletask的啟動模式:在任務棧裡面只允許一個實例存在,假如02是singletask,
棧裡是:01 02 01 03 若此時開啟02,則會復用這個已經存在的activity,並且把當前activity上面其他的activity從任務棧裡清空!
3.應用場景:
浏覽器:底層使用的是webkit c 內核,初始化一次需要申請很多的內存資源,占用cpu時間
所以使用singletask,保證在任務棧裡只會有一個實例存在
四:singleInstance的啟動模式(相當於實例):
1.Androidfest的配置:
<activity
android:name="com.itcode.taskstack.SecondActivity"
android:label="@string/_second"
android:launchMode="singleInstance">
</activity>
2.特點:
singleInstance的啟動模式更加極端,
開啟新的activity,會給自己創建一個單獨的任務棧
3.應用場景:
在整個手機操作系統裡面只會有一個該activity的實例存在,
所以多個應用程序共享這個activity的實例,有線程安全問題!