Task 其實(shí)就是一組 Activity 的集合瞬场,這些 Activity 被放在一個棧里(Back Stack 后進(jìn)先出)泌类。當(dāng)用戶按 Back 鍵時棧頂?shù)?Acitvity 被彈出。注意和按 Home 鍵不一樣刃榨,按 Home 鍵棧里的 Activity 的狀態(tài)會保存枢希,按 Back 鍵彈出的 Activity 就被銷毀了。
這節(jié)看得有點(diǎn)暈茅诱,還是放一個原文 連接 吧搬卒。
這節(jié)主要講了啟動一個 Activity 時如何通過設(shè)置標(biāo)簽屬性或 startActivity 函數(shù)參數(shù)來改變它與 Task 和 Back Stack 的關(guān)系契邀。
<activity> 屬性:
- taskAffinity
- launchMode
- allowTaskReparenting
- clearTaskOnLaunch
- alwaysRetainTaskState
- finishOnTaskLaunch
intent flag
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_SINGLE_TOP
啟動模式
通過標(biāo)簽設(shè)置:
*standard
*singleTop
*singleTask
*singleInstance
通過 flag 設(shè)置:
*FLAG_ACTIVITY_NEW_TASK
*FLAG_ACTIVITY_SINGLE_TOP
*FLAG_ACTIVITY_CLEAR_TOP
Clearing the back stack
當(dāng)用戶離開一個任務(wù)再回來時坯门,默認(rèn)情況下清除除了根之外的其他 Activity。要改變這種情況可以設(shè)置 activity 屬性:
*alwaysRetainTaskState
*clearTaskOnLaunch
*finishOnTaskLaunch
Starting task
<activity ... >
<intent-filter ... >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
...
</activity>
當(dāng) launch mode 被設(shè)置成 "singleTask" and "singleInstance" 時應(yīng)該設(shè)置以上代碼欠橘。