0

这是我的问题:我的应用程序中有多个活动,其中两个有点“特殊”。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);

正常流程是:

  1. A 正在运行
  2. 发生了一些事情 - B 启动
  3. 如果用户按下主页按钮,我有两个通知 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,但都不起作用。

4

1 回答 1

0

我的问题是,这两个活动都在同一个任务上运行。尽管文档 FLAG_ACTIVITY_NEW_TASK 不会在新任务中启动 Activity - 它会将 . 您必须在该特定活动的清单中使用 android:taskAffinity 并将其设置为唯一值。只有这样,它才会在新任务中启动。这样,用于 A 的 FLAG_ACTIVITY_CLEAR_TOP 不会破坏 B。

于 2012-10-02T15:38:29.197 回答