看看你对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