看看你對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
此時任務棧是什么樣子蹭秋?
答 會產(chǎn)生兩個TASK:
Task 2: C
Task 1: B猾漫, A (from top to bottom)。
由于加上了 FLAG_ACTIVITY_NEW_TASK, 會為C單獨創(chuàng)建一個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單獨創(chuàng)建一個 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已經(jīng)存在,再次啟動A咧叭, 那么A會恢復到前臺蚀乔,并把所在Task上面的Activity都clear掉。
附:查看棧信息的命令菲茬。
adb shell dumpsys activity