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
.
我正在尝试 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
.