看看你對Activity的任務棧了解多少?
我設計了幾個關于任務棧的問題,看看你對Android 任務棧的知識了解多少?
Activity A 是 singleTask 模式, Activity B是standard 模式, Activity C是standard 模式
問題1:A,B, C在同一個應用中,都沒有設置 taskAffinity
1 .A 啟動 B ,
2 .B 啟動 C , 同時加上Flag FLAG_ACTIVITY_NEW_TASK
此時任務棧是什么樣子?
答 只會有一個Task 里面是: C, B, A (from top to bottom)。
雖然加上了 FLAG_ACTIVITY_NEW_TASK, 但是 B 和 C 屬于同一個應用,C會啟動到B所在的Task里面。問題2: A,B, C在同一個應用中,C設置了 taskAffinity
1 .A 啟動 B ,
2 .B 啟動 C , 同時加上Flag FLAG_ACTIVITY_NEW_TASK
此時任務棧是什么樣子?
答 會產生兩個TASK:
Task 2: C
Task 1: B, A (from top to bottom)。
由于加上了 FLAG_ACTIVITY_NEW_TASK, 會為C單獨創建一個Task問題3: A 和B在同一個應用, C 屬于另外一個應用
A 啟動 B,B啟動C,同時加上FLAG_ACTIVITY_NEW_TASK
此時任務棧是什么樣子?
答 會有兩個Task,和問題2的結果一樣
Task2: C
Task1: B, A (from, top to bottom)
由于C屬于另外一個應用, 會為C單獨創建一個 Task.問題4: 接著問題2, A,B, C在同一個應用中,C設置了 taskAffinity
1 .A 啟動 B ,
2 .B 啟動 C , 同時加上Flag FLAG_ACTIVITY_NEW_TASK
3 .C 再 啟動A
此時任務棧是什么樣子?
答:會有兩個Task
Task1: A
Task2: C
注意 Acitivy B 不見了。 因為 A 是 singleTask 的啟動模式,如果A已經存在,再次啟動A, 那么A會恢復到前臺,并把所在Task上面的Activity都clear掉。
附:查看棧信息的命令。
adb shell dumpsys activity