今天重读文档,实验的时候发现 Activity 启动模式 FLAG_ACTIVITY_NEW_TASK 和 singleTask 有不同的行为,而官方文档说这两个行为一致,很奇怪
具体问题是:
假设有三个 Activity A,B,C
1、使用 Manifest 定义方式定义 B 为 singleTask,其它默认
A 打开 B,B 打开 C,C 再打开 B,此时 stack 中只有 AB,B 在 top,这是正常现象
2、使用代码添加 FLAG_ACTIVITY_NEW_TASK 标志,Manifest 都默认
同样 A 打开 B,B 打开 C,C 再打开 B (添加 flag ),此时 stack 里为 ABCB,B 在 top,仿佛 FLAG_ACTIVITY_NEW_TASK 标志没有起任何作用,跟 standard 一样
希望有大神可以帮忙解释一下,谢谢
1
susunus 2018-07-05 17:49:06 +08:00 via Android
不是大神哈,你说的这个情况,网上好多这块的说明哈,
|
2
orangex 2018-07-05 18:27:20 +08:00
|
3
orangex 2018-07-05 18:57:05 +08:00
可以确定的是,FLAG_ACTIVITY_NEW_TASK 和 singletask 并不完全一样。可以看看 ActivityStarter.java,启动的逻辑很复杂而且版本间有区别。
|
4
johnidy 2018-07-06 00:20:42 +08:00 via Android
new task 和 single instance 的情况是一样的
|
5
wsxyeah 2018-07-06 07:36:43 +08:00 via iPhone
你需要的是 clear top
|
6
scuthua 2018-07-07 19:46:57 +08:00
你好,有个疑问。为什么第二种情况里 C 打开 B 添加了 flag,而 A 打开 B 不添加 flag 呢?
|