这是我的问题:我的应用程序中有多个活动,其中两个有点“特殊”。Activity A 是 home 类型的 Activity,用来启动其他的 Activity。它还包含一些其他信息,可以从后台更新(使用 onNewIntent)。在清单中,我将其声明为 singleTop。它为结果启动其他活动,因此它不能是 singleTask 或 Instance(startActivityForResult 不适用于它们)。Activity B 是一个独立的 Activity,它在某些事件上启动,也声明为 singleTop。它还为结果启动其他活动,并使用其 onNewIntent。我有两个单独的通知,它们链接到相应的活动。我两个都用
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
正常流程是:
- A 正在运行
- 发生了一些事情 - B 启动
- 如果用户按下主页按钮,我有两个通知 A 和 B
问题是:如果用户按下 A 的通知,A 会启动,但是 B 会被杀死(由于 clear_top标志)
我读过这篇文章 - http://developer.android.com/guide/components/tasks-and-back-stack.html 据我了解,FLAG_ACTIVITY_NEW_TASK 应该在单独的任务中启动活动,FLAG_ACTIVITY_CLEAR_TOP 在这种情况下不应该杀死 B .
一种解决方法是重新编写逻辑,使它们成为 singleTasks 并处理 onNewIntent 中其他活动的结果,但如果有其他解决方案,我不喜欢这样做。我也试过
FLAG_ACTIVITY_REORDER_TO_FRONT | FLAG_ACTIVITY_SINGLE_TOP
和
FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACTIVITY_CLEAR_TOP
启动 B,但都不起作用。