Tasks and Back Stack

Task 其實(shí)就是一組 Activity 的集合,這些 Activity 被放在一個(gè)棧里(Back Stack 后進(jìn)先出)。當(dāng)用戶(hù)按 Back 鍵時(shí)棧頂?shù)?Acitvity 被彈出。注意和按 Home 鍵不一樣,按 Home 鍵棧里的 Activity 的狀態(tài)會(huì)保存,按 Back 鍵彈出的 Activity 就被銷(xiāo)毀了。

這節(jié)看得有點(diǎn)暈,還是放一個(gè)原文 連接 吧。

這節(jié)主要講了啟動(dòng)一個(gè) Activity 時(shí)如何通過(guò)設(shè)置標(biāo)簽屬性或 startActivity 函數(shù)參數(shù)來(lái)改變它與 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

啟動(dòng)模式

通過(guò)標(biāo)簽設(shè)置:
*standard
*singleTop
*singleTask
*singleInstance
通過(guò) flag 設(shè)置:
*FLAG_ACTIVITY_NEW_TASK
*FLAG_ACTIVITY_SINGLE_TOP
*FLAG_ACTIVITY_CLEAR_TOP

Clearing the back stack

當(dāng)用戶(hù)離開(kāi)一個(gè)任務(wù)再回來(lái)時(shí),默認(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" 時(shí)應(yīng)該設(shè)置以上代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容