Android 清除/完成之前的活动(除了一项)

Pan*_*nos 5 android activity-finish android-activity

在android中我有以下路径:

活动 1 -> 活动 2 -> 活动 3 -> ... 活动 N -> 按下按钮 ...

当按下按钮时,我想清除/完成从活动 2 到 N 的所有活动,然后转到活动 X。换句话说,我想完成所有活动,直至最初的一个,然后移至另一个。

如果我使用标志:

CLEAR_TOP、CLEAR_TASK、NEW_TASK 等

从理论上讲,它将完成第一个活动之前的所有活动。有什么办法可以让第一个活动保持活力并转移到活动 X 吗?

mat*_*ash 2

我不确定我是否理解这个问题。或者更确切地说,无法使用的原因 FLAG_ACTIVITY_CLEAR_TOP

如果设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是关闭该活动之上的所有其他活动,并且此 Intent 将传递到(现在在顶部)旧活动作为新意图。

例如,考虑一个由以下活动组成的任务:A、B、C、D。如果 D 使用解析为活动 B 的组件的 Intent 调用 startActivity(),则 C 和 D 将完成,并且 B 接收给定的 Intent ,结果堆栈现在为:A,B。

如果我理解正确的话,那正是你想要的。特别是对于,

活动 1 -> 活动 2 -> 活动 3 -> ... 活动 N -> 按下按钮 ...

Activity2.class 使用和标志启动 IntentFLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP将返回到Activity2 的现有实例(而不是创建新实例)并在onNewIntent(). 您只需要向此意图添加一个额外的内容,以便此方法知道它应该在之后调用 ActivityX。

也就是说,除非我错过了什么。:)