Android活动返回栈和多任务支持

3
我有一个支持多任务(在后台工作)的应用程序,但是我遇到了Android后退栈的问题。
这是我的情况:
Activity A启动Activity B以获取结果,所以...
Activity A --> Activity B
如果当用户在Activity B时长按home按钮并切换到另一个应用程序(例如浏览器),然后再次长按home按钮并返回到我的应用程序,他们将处于Activity B状态,但此时后退栈将如下所示:
Activity A --> Internet Browser --> Activity B
因此,当我使用finish()从我的Activity B发送结果时,它不会返回到我的Activity A,而是返回到Internet Browser...
如果用户不使用长按home按钮,而是使用home按钮返回到其启动器,然后再使用长按home按钮返回我的应用程序,情况也是如此。在这种情况下,后退栈甚至更糟:
Home Launcher --> Activity B
因此,当我在Activity B上使用finish()时,用户会回到他们的主屏幕,并且除非他们再次从应用程序抽屉中启动该应用程序,否则他们永远无法返回Activity A。
是否有任何方法在这种情况下实现多任务处理?无论用户在这两个活动之间打开了什么,Activity B都需要始终返回结果到Activity A。

展示你用于启动B活动的代码。听起来你可能错误地设置了一些标志位。 - undefined
问题可能是我没有设置任何标志,但我不确定应该设置哪些标志,也许你可以指点我正确的标志。这是我的代码:Intent i = new Intent(ActivityA.this, ActivityB.class); i.setAction("android.intent.action.PICK"); startActivityForResult(i, 0); - undefined
1个回答

2

好的。经过长时间的研究和尝试各种方法,这是解决问题的方法。希望这能帮助其他人...

解决方案非常简单,在AndroidManifest.xml中:

为Activity A设置android:launchMode="singleTask"

为Activity B设置android:noHistory="true"

这样,如果我们转到另一个应用程序(如浏览器)或退出到主屏幕,Activity B将从堆栈中删除,因此当我们回到我们的应用程序时,我们会回到Activity A。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接