Android back stack - 返回到back stack中的某个activity

awo*_*rer 2 android android-intent back-stack

我有活动 A -> B -> C -> D。如何从活动 D 中打开现有的 B,清除 C 和 D?我最终会得到 A -> B。我不想重新创建一个新的 B。

mml*_*loo 5

我认为你必须使用FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP

根据文档:

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

上例中当前运行的 Activity B 实例将要么接收您在其 onNewIntent() 方法中启动的新意图,要么自行完成并使用新意图重新启动。如果它已声明其启动模式为“multiple”(默认),并且您没有以相同的意图设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将传递到当前实例的 onNewIntent()。