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

2018-07-05 16:47:39 +08:00
 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 一样

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

4760 次点击
所在节点    Android
6 条回复
susunus
2018-07-05 17:49:06 +08:00
不是大神哈,你说的这个情况,网上好多这块的说明哈,
orangex
2018-07-05 18:27:20 +08:00
orangex
2018-07-05 18:57:05 +08:00
可以确定的是,FLAG_ACTIVITY_NEW_TASK 和 singletask 并不完全一样。可以看看 ActivityStarter.java,启动的逻辑很复杂而且版本间有区别。
johnidy
2018-07-06 00:20:42 +08:00
new task 和 single instance 的情况是一样的
wsxyeah
2018-07-06 07:36:43 +08:00
你需要的是 clear top
scuthua
2018-07-07 19:46:57 +08:00
你好,有个疑问。为什么第二种情况里 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