我正在后台从服务启动活动A,这很有效,并且活动已创建并可使用以下代码:
Intent intent = new Intent(context, getActivityClass());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
如果已在任务列表中包含活动A的应用程序的运行活动B,则会出现意外行为。 如果用户使用后退按钮,当我的活动A从后台启动时,用户可能会回到前面的活动, 然而它导航回到活动B而不是真的令人困惑。
在阅读文档后,我尝试允许任务重新显示,但这仍然无法解决,但仍然显示上述问题。
<activity
android:name="net.x.y.z.PickContactActivity"
android:allowTaskReparenting="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
根据这个问题Need single activity in new task backstack应该使用Intent.FLAG_ACTIVITY_MULTIPLE_TASK,但是在评论中提到不要使用它,除非实现app-launcher
除非您要实现自己的顶级应用程序启动器,否则请勿使用此标志。由于默认系统不包含图形任务管理,因此除非您为用户提供某种方式返回已启动的任务,否则不应使用此标志。
然后我需要做些什么才能解决这个问题?简而言之:选择联系人活动应该简单地作为一个真正的新任务处理,而不与任何其他正在运行的应用程序实例相关联,就像我在Windows PC上打开记事本两次一样
我真的很高兴能有这个好的解决方案, 提前谢谢
答案 0 :(得分:2)
BY DEFAULT;同一个应用程序中的两个活动将出现在同一个任务中;要更改此行为,请在Manifest xml中为活动A和B添加:android:taskAffinity =“”;并将android:allowTaskReparenting更改为“假“