Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何放弃另一个任务的活动堆栈_Android_Android Intent_Android Activity_Back Stack_Android Navigation - Fatal编程技术网

Android 如何放弃另一个任务的活动堆栈

Android 如何放弃另一个任务的活动堆栈,android,android-intent,android-activity,back-stack,android-navigation,Android,Android Intent,Android Activity,Back Stack,Android Navigation,我有一个非常特殊的情况(客户要求)让我在导航方面有问题,我必须承认我在这个项目之前没有处理过任务,我可能遗漏了一些明显的东西 假设我的活动A(主)启动了B。问题是,BroadcastReceiver触发了一个活动B(我知道不建议这样做,但这是一个硬要求),它需要使用标记活动\新任务 发生的事情是,我在新的B,一旦用户输入代码,活动a将被提示,如果a按回到那里,我将返回到原始任务,如果它是后台的,它有a->B。导致类似于a->B->(后台/主页按钮)。BroadcastReceiver->B->A

我有一个非常特殊的情况(客户要求)让我在导航方面有问题,我必须承认我在这个项目之前没有处理过
任务
,我可能遗漏了一些明显的东西

假设我的活动A(主)启动了B。问题是,
BroadcastReceiver
触发了一个活动B(我知道不建议这样做,但这是一个硬要求),它需要使用
标记活动\新任务

发生的事情是,我在新的B,一旦用户输入代码,活动a将被提示,如果a按回到那里,我将返回到原始任务,如果它是后台的,它有a->B。导致类似于
a->B->(后台/主页按钮)。BroadcastReceiver->B->A->(返回A->B的旧任务)

有没有办法摆脱该任务,或者至少强制新的活动a成为原始堆栈中的一个,这样用户可以在按下back后进入主屏幕

我查过了,但这些建议没有帮助

最低API级别9


提前谢谢你,相信我,我已经尝试了许多launchMode组合,并阅读了许多帖子。再次感谢您。

以防万一有人说到这一点。几周前,源代码中有一个修改,主要活动要完成,因此,在重用该活动并通过CLEAR_TOP flag清除堆栈上部时,launchMode
singleTask
没有起任何作用。希望任何遇到类似问题的人都检查代码,直到使用导航(util)库为止。注意这一点

因此:

这种情况正在发生<代码>A在自己完成时启动了
B
,导致了一堆
B
。BroadcastReceiver扩展类启动
A
后,在任何任务堆栈中都没有以前的活动
A
。它创建了任务1[B]task2[Btask2的
B
启动了
A
,在
task2
完成后,它将返回到带有
B
task1
,当按下Up按钮时,它又会重新创建
A