有大神熟悉 Android Activity 的启动模式吗,想请教个问题

2018 年 7 月 5 日
 photonvx

今天重读文档,实验的时候发现 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 一样

希望有大神可以帮忙解释一下,谢谢

13947 次点击
所在节点    Android
6 条回复
susunus
2018 年 7 月 5 日
不是大神哈,你说的这个情况,网上好多这块的说明哈,
orangex
2018 年 7 月 5 日
orangex
2018 年 7 月 5 日
可以确定的是,FLAG_ACTIVITY_NEW_TASK 和 singletask 并不完全一样。可以看看 ActivityStarter.java,启动的逻辑很复杂而且版本间有区别。
johnidy
2018 年 7 月 6 日
new task 和 single instance 的情况是一样的
wsxyeah
2018 年 7 月 6 日
你需要的是 clear top
scuthua
2018 年 7 月 7 日
你好,有个疑问。为什么第二种情况里 C 打开 B 添加了 flag,而 A 打开 B 不添加 flag 呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/468409

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX