假设当前任务堆栈有四个活动实例,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?
感谢。
答案 0 :(得分:2)
经验证据表明,它将最近的实例带到了前面。在您的示例中,如果活动堆栈开头如下:
A0, A1, B0, C0 (front of task)
并且C0以Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
开始A,实例A1被带到前面,活动堆栈现在看起来像这样:
A0, B0, C0, A1
当您使用此标志时,Android会查找此活动的实例(从任务的前面开始并扫描到任务的后面/根)。它找到的第一个实例将被带到前面。如果它没有在活动堆栈中找到任何实例,它将创建一个新实例。