多个活动实例和FLAG_ACTIVITY_REORDER_TO_FRONT

时间:2011-02-09 20:09:08

标签: android android-activity

假设当前任务堆栈有四个活动实例,A0,A1,B0,C0,堆栈顶部有C0。 A0,A1是活动A的实例,B0是活动B的实例,C0是活动C0的实例。

现在C0用FLAG_ACTIVITY_REORDER_TO_FRONT创建一个intent并启动Activity A:

Intent intent = new Intent(this, A.class);
intent.setFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

我的问题是,哪个实例将被带到前面,A0或A1?任务堆栈是否会变为A0,B0,C0,A1或A1,B0,C0,A0?

感谢。

1 个答案:

答案 0 :(得分:2)

经验证据表明,它将最近的实例带到了前面。在您的示例中,如果活动堆栈开头如下:

 A0, A1, B0, C0 (front of task)

并且C0以Intent.FLAG_ACTIVITY_REORDER_TO_FRONT开始A,实例A1被带到前面,活动堆栈现在看起来像这样:

A0, B0, C0, A1

当您使用此标志时,Android会查找此活动的实例(从任务的前面开始并扫描到任务的后面/根)。它找到的第一个实例将被带到前面。如果它没有在活动堆栈中找到任何实例,它将创建一个新实例。