需要 FLAG_ACTIVITY_NEW_TASK 说明

新手上路,请多包涵

所以我的问题是:

  • 我启动 App1,打开 Screen1,然后打开 Screen2。
  • 我按下 Home,将 App1 留在后台。
  • 我打开 App2,使用 FLAG_ACTIVITY_NEW_TASK 启动 App1.Screen1,期望在之前留下的任务中出现在 App1.Screen2 上。相反,我在 App1.Screen1 上,系统调用了 onNewIntent()。

当我按回去时,它会再次带来 Sceen2 和 Screen1。我不使用任何其他意图标志或启动模式。

有人可以解释发生了什么吗?

原文由 jakk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 331
2 个回答

Android 有大量与活动和任务相关的错误。

然而,谷歌改变了操作系统版本之间的任务行为,并且没有通知开发人员,这是最令人讨厌的事情。

jakk - 如果您没有在活动(A 或 B)上设置任何标志,那么您描述的行为就是 错误 的。

对于所有说文档没有问题的人,试试这个:

  1. 使用 Activity A(启动 Activity)和 B(两者都使用默认启动模式)创建一个应用程序。
  2. 启动应用程序 - 仅使用活动 A 创建任务。
  3. 通过活动 A 中的按钮,使用 FLAG_ACTIVITY_NEW_TASK 启动活动 B。
  4. 多次单击该按钮,您会看到在任务中多次创建了 Activity B,这与文档中所说的不同。

还有更多场景可以证明文档是 BAD/WRONG。

原文由 user267545 发布,翻译遵循 CC BY-SA 3.0 许可协议

以下代码片段有效:

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

原文由 balakumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题