【筆記】【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棧的情況。