Intent.FLAG_ACTIVITY_CLEAR_TOP会破坏目标活动。怎么避免?

时间:2016-08-18 19:11:54

标签: android android-activity activity-lifecycle appcompatactivity

我试图返回活动堆栈中的活动,删除当前活动与目标活动之间的所有活动。

我知道这是实现它的方法:

Intent i = new Intent(SettingsActivity.this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

据说它将完成当前和目的地之间的所有活动,但也会破坏目的地活动。

这不是我想要的行为。我需要避免目标活动的破坏。它应该恢复自己而不是被破坏和重建。

如何实现?

1 个答案:

答案 0 :(得分:4)

您需要像这样添加FLAG_ACTIVITY_SINGLE_TOP

Intent i = new Intent(SettingsActivity.this, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);

当您使用FLAG_ACTIVITY_CLEAR_TOP时,Android会删除目标Activity之上的所有活动,包括目标Activity的现有实例,然后创建目标{{1}的新实例}}。如果您要使用目标Activity的现有实例,则还需要指定Activity