我有一个支持多任务处理的应用程序(在后台工作),但我遇到了android backstack的问题。
这就是我所拥有的:
活动A为结果启动活动B,所以......
活动A - >活动B
如果在活动B时,用户长按主页按钮并切换到另一个应用程序(例如浏览器),然后再次长按主页按钮,回到我的应用程序,他们将在活动B,但此时的后台堆栈将如下所示:
活动A - >互联网浏览器 - >活动B
所以,当我finish()
从我的活动B发回结果时,它不会回到我的活动A,而是回到互联网浏览器......
如果用户不长按主页按钮,也会使用主页按钮返回其启动器然后再进行此操作使用长按主页按钮返回我的应用程序。在这种情况下,后栈更糟糕:
Home Launcher - >活动B
因此,当我在活动B上finish()
时,用户返回主屏幕,他们永远无法返回活动A,除非他们从应用程序抽屉再次启动应用程序。
在这种情况下,有没有办法实现多任务工作?无论用户在这两者之间打开什么,活动B都需要始终将结果返回给活动A.
答案 0 :(得分:1)
行。经过长时间的研究和尝试各种事情,这是解决问题的方法。希望这有助于其他人......
解决方案非常直接且简单,在AndroidManifest.xml中
为活动A设置android:launchMode="singleTask"
为活动B设置android:noHistory="true"
这样,如果我们转到另一个应用程序(如浏览器)或退出到主屏幕,活动B将从堆栈中删除,因此当我们回到我们的应用程序时,我们将返回活动A.