需要FLAG_ACTIVITY_NEW_TASK澄清

jak*_*akk 18 android android-intent

所以我的问题是:

  • 我启动App1,打开Screen1,然后打开Screen2.
  • 我按Home,将App1留在后台.
  • 我打开App2,用FLAG_ACTIVITY_NEW_TASK启动App1.Screen1,期望在前面左侧任务中的App1.Screen2上.相反,我在App1.Screen1和系统上调用onNewIntent().

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

有人能解释一下发生了什么吗?

小智 36

Android有很多与活动和任务相关的错误.

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

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

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

  1. 使用活动A(启动活动)和B(两者的默认启动模式)创建应用程序.
  2. 启动应用程序 - 仅使用活动A创建任务.
  3. 从活动A中的按钮,使用FLAG_ACTIVITY_NEW_TASK启动活动B.
  4. 单击该按钮几次,您将看到在任务内多次创建活动B,这不是文档所说的.

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

  • 这是因为`taskAffinity`优先于`FLAG_ACTIVITY_NEW_TASK`.如果您希望ActivityB处于与ActivityA不同的任务中,则需要为其提供不同的`taskAffinity`.但是,我同意,有很多与活动和任务相关的错误:-) (14认同)

Dav*_*ser 9

在您打开App2并启动App1.Screen1的第3步中,您Intent.FLAG_ACTIVITY_NEW_TASK还需要设置Intent.FLAG_ACTIVITY_SINGLE_TOP为执行此操作以执行所需操作.这是一个Android bug :-(

还要注意,如果您是第一次从IDE(IntelliJ,Eclipse)启动应用程序,或者通过市场(Google Play)或浏览器下载安装应用程序后,行为也会有点破坏.请参阅如何使用不同的意图启动多个活动实例以及http://code.google.com/p/android/issues/detail?id=26658


小智 7

试试这个.这个对我有用.

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)