Android 使用“将活动重新排序到前面”标志将活动带到前面

Android 使用“将活动重新排序到前面”标志将活动带到前面,android,Android,我的活动堆栈是A1 B A2,A2位于顶部 A1和A2是相同活动的实例,A。现在在A2中,我希望A2退出并将A1带到前面,所以最后的堆栈应该是B A1。我应该如何实施它 我当前的A2执行代码是: finish(); intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_PREV

我的活动堆栈是A1 B A2,A2位于顶部

A1和A2是相同活动的实例,A。现在在A2中,我希望A2退出并将A1带到前面,所以最后的堆栈应该是B A1。我应该如何实施它

我当前的A2执行代码是:

        finish();

        intent = new Intent(this, A.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
        startActivity(intent);
上面的代码将B带到前面,因此最后的堆栈是a1b,这不是我所期望的

有什么想法吗

谢谢。

在调用startActivity之前,先调用finish()。你认为活动结束后应该如何开始


另外,它如何知道要将哪个实例放在前面?

使用意图标志不可能实现您想要的功能

原因在于
标记活动\u重新排序\u到\u前端
的工作方式。当您使用此标志时,Android会在活动堆栈中查找所需活动的实例,从堆栈的前面开始扫描,直到到达堆栈的根/后面。一旦找到指定活动的实例,它会将该实例带到前面(即:如果指定活动有多个实例,它会将最近的实例带到前面)

在您的情况下,活动堆栈如下所示:

A1, B, A2 (front of task)
当尝试对活动A重新排序时,Android会首先找到实例A2并将其重新排序到任务的前面。当然,它已经在任务的最前面了,所以这实际上没有任何作用

当然,您已经在这个活动中调用了 FixSee()/代码>,并且您已经尝试过(通过使用代码> FravaActuviyPrviviousIsStope)来告诉Android,它不应该考虑当前的活动,同时决定要做什么,但是这都被忽略了。Android将A2视为活动A的最新实例,并将其重新排序到最前面。然后A2完成,活动B成为任务的前端。用户看到“B”,活动堆栈为:

A1, B (front of task)

你需要找到另一种方法来达到预期的效果(因为这篇文章已经快2年了,我想你已经找到了另一种方法)。

在我的应用程序中,我也遇到了同样的情况

我的解决方案是创建一个不可见的启动活动X,它重定向到

因此,您的堆栈将如下所示:

X A1 B A2


在需要返回A1的任何时候,我都会返回到X(使用FLAG\u ACIVITY\u CLEAR\u TOP),这将启动A。

您可以调用
finish()
,然后继续执行工作,包括启动其他活动。这没什么错。调用
finish()。