天天看點

Android中與task相關的幾個屬性

1、與任務相關的屬性

  • taskAffinity :修改任何給定Activity的關聯
    • 系統使用包名辨別應用的預設任務關聯;
    • taskAffinity屬性取字元串值,必須不同于包名;
    • taskAffinify起作用的兩種情況
      • 啟動Activity的Intent包含FLAG_ACTIVITY_NEW_TASK;
      • Activity的allowTaskReparenting為true;
  • lauchMode
    • standard,預設模式 —— 系統在啟動Activity的任務中建立Activity的新執行個體并向其傳送Intent。Activity可以多次執行個體化,每個執行個體可以屬于不同任務,一個任務可以擁有多個執行個體。
    • singleTop —— 若目前任務的頂部已經存在Activity的一個執行個體,則系統會通過onNewIntent()方法傳送Intent。Activity可以多次執行個體化,每個執行個體均可屬于不同的任務,一個任務可以擁有多個執行個體(前提是位于傳回棧頂的Activity并不是Activity的現有執行個體)。
    • singleTask —— 系統建立新任務并執行個體化位于新任務底部的Activity。如果該Activity的一個執行個體已經存在一個單獨任務中,系統會通過現有執行個體的onNewIntent()方法向其傳送Intent。一次隻能存在Activity的一個執行個體。
    • singleInstance —— 與singleTask相同,隻是系統不會将任何其他Acitivty啟動到包含執行個體的任務中。該Activity是其任務唯一僅有的成員;由此Activity啟動的任何Activity均在單獨任務打開。
    • 使用launchMode屬性為Activity指定的行為可以由Intent附帶的Activity啟動标志替代。
  • allowTaskReparenting —— true/false,Activity是否可以從其啟動的任務移動到與其具有關聯的任務。
  • clearTaskOnLaunch —— true/false,若設定為true,每當使用者離開任務後傳回時,系統都會将堆棧清除到隻剩下根Activity。與alwaysRetainTaskState剛好相反。
  • alwaysRetainTaskState —— true/false,使用者長時間離開任務後,仍将所有Activity保留在其堆棧中(預設會清除根Activity外的其他Activity)。
  • finishOnTaskLaunch —— true/false,類似clearTaskOnLaunch,但隻對單個Activity起作用。可能導緻任何Activity停止,包括根Activity。使用者離開後傳回任務,任務将不複存在。

2、與任務相關的Intent标志 (啟動模式)

  • FLAG_ACTIVITY_NEW_TASK —— 在新任務中啟動Activity。如果正在啟動的Activity已經處于運作狀态,則該任務會轉到前台并恢複其最後狀态,同時Activity會在onNewIntent()中收到新Intent。
    • 在Activity上下文之外啟動Activity需要給Intent設定FLAG_ACTIVITY_NEW_TASK标志,否則會報異常。
    • 首先會查找是否存在和被啟動Activity具有相同親和性的任務棧,如果有,則直接把這個棧整體移動到前台,并保持棧中狀态不變。
    • 預設情況下同一個應用中的所有Activity擁有相同的taskAffinity
  • FLAG_ACTIVITY_SINGLE_TOP—— 如果正在啟動的Activity是目前Activity(位于傳回戰頂部),則現有執行個體會接收對onNewIntent()的調用,而不是建立新執行個體。産生與singleTop相同的行為。
  • FLAG_ACTIVITY_CLEAR_TOP —— 如果正在啟動的Activity已在目前任務中運作,則會銷毀目前任務頂部所有Activity,并通過onNewIntent()将此Intent傳遞給Activity已恢複的執行個體。
  • FLAG_ACTIVITY_CLEAR_TOP通常與FLAG_ACTIVITY_NEW_TASK結合使用。

3、處理關聯(即Activity優先屬于哪個任務)

(1)預設情況下,同一應用中的所有Activity彼此關聯,優先位于相同任務中。

(2)通過 taskAffinity屬性設定關聯

作者:AmyZYX

出處:http://www.cnblogs.com/amyzhu/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。