一: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的實例,有線程安全問題!