Intent.FLAG_ACTIVITY_CLEAR_TOP会销毁目标Activity。如何避免?

3

我想要返回到一个在活动栈中的活动,并删除当前活动和目标活动之间的所有活动。

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

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

据说它将完成当前和目标之间的所有活动,但同时也会销毁目标活动。
这不是我想要的行为。我需要避免破坏目标活动。它应该恢复自身,而不是被销毁和重建。
如何实现这一点?
1个回答

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 实例,然后创建目标 Activity 的新实例。如果您想要使用目标 Activity 的现有实例,则还需要指定 FLAG_ACTIVITY_SINGLE_TOP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接