awo*_*rer 2 android android-intent back-stack
我有活动 A -> B -> C -> D。如何从活动 D 中打开现有的 B,清除 C 和 D?我最终会得到 A -> B。我不想重新创建一个新的 B。
我认为你必须使用FLAG_ACTIVITY_CLEAR_TOP
和FLAG_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()。
归档时间: |
|
查看次数: |
1508 次 |
最近记录: |