Intent.FLAG_ACTIVITY_CLEAR_TOP 摧毁目的地 activity。如何避免?

Intent.FLAG_ACTIVITY_CLEAR_TOP destroys the destination activity. How to avoid?

我正在尝试 return 回到 activity 堆栈中的 activity,删除当前堆栈和目标之间的所有 activity activity.

我读到这是实现它的方法:

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

据说它将完成当前和目的地之间的所有活动,而且正在破坏目的地activity。

这不是我想要的行为。我需要避免破坏目的地 activity。它应该自行恢复,而不是被销毁并重新创建。

如何实现?

您需要像这样添加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 的现有实例,然后创建一个新实例目标 Activity。如果要使用目标 Activity 的现有实例,还需要指定 FLAG_ACTIVITY_SINGLE_TOP.