【发布时间】:2014-11-15 17:55:06
【问题描述】:
我正在后台从服务启动一个活动 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,但是在 cmets 中提到除非实现应用程序启动器,否则不要使用它
除非您正在实现自己的顶级应用程序启动器,否则请勿使用此标志。因为默认系统不包括图形任务管理,所以除非您提供某种方式让用户返回到您已启动的任务,否则不应使用此标志。
然后我该怎么做才能解决这个问题?简而言之:选择联系人活动应该简单地作为一个真正的新任务处理,而不与应用程序的任何其他正在运行的实例相关联,就像我在 Windows pc 上打开记事本两次一样
我真的很高兴对此有很好的解决方案, 提前致谢
【问题讨论】:
标签: android android-intent android-activity background launch