【筆記】【Android】Activity的Task模式

GiraKoo發表於2024-10-30

【筆記】【Android】Activity的Task模式

筆記系列,內容是從網路搜尋的結果,不一定是正確的理解。
如果存在謬誤,歡迎大家指正。

Task

一個應用可能會包含多個Activity,管理這些Activity順序的容器,就是Task。

  • 當Activity1拉起Activity2時,Task會將Activity2壓棧,將顯示Activity2的內容。
  • 當使用者點選Back按鈕時,Task會將Activity2出棧,繼續顯示Activity1的內容。

為什麼要建立多個Task

Launcher以及App是相對獨立的存在。

  • 當顯示Launcher時,其他App可以在後臺等待喚醒。
  • 當某個App在顯示中時,Launcher可以和其他App在後臺等待喚醒。

如果將所有的畫面(Activity)混在一起,當多個App進行前後臺切換時,畫面堆疊的管理將不可實施。

四種模式(Standard,SingleTop,SingleTask,SingleInstance)

標準模式(Standard)

可以重複建立多個例項。

棧頂複用模式(SingleTop)

如果要啟動的Activity已經在棧頂,則直接複用,不會建立。

棧內複用模式(SingleTask)

如果Activity已經啟動,執行clearTop,將其之上的Activity都出棧。一般用於MainActivity。

棧內唯一模式(SingleInstance)

Activity標誌位

FLAG_ACTIVITY_CLEAR_TOP

這個標誌位可以用於需要返回Task棧中某個Activity的場景。針對Activity的一次性設定。

FLAG_ACTIVITY_NEW_TASK

啟動一個Activity,並且將其放到一個全新的Task中。
適用於以下情況。

  • 外部的其他App啟動另一個App的情況。
  • 一個沒有介面的Service或者BroadcastReceiver等拉起Activity的情況。
  • 啟動一個需要獨立Task棧的情況。

相關文章