Android后台堆栈 - 返回后台堆栈中的某个活动

时间:2014-10-16 01:27:49

标签: android android-intent back-stack

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

3 个答案:

答案 0 :(得分:3)

我认为您必须使用FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP

根据文件:

  

考虑由活动组成的任务:A,B,C,D。如果D呼叫   startActivity(),带有解析为组件的Intent   活动B,然后C和D将完成,B接收给定的   意图,导致堆栈现在为:A,B。

     

上例中活动B的当前运行实例将会   要么接收你从这里开始的新意图   onNewIntent()方法,或者自己完成并重新使用new   意图。如果它已宣布其启动模式为“多个”(   默认情况下,您没有设置FLAG_ACTIVITY_SINGLE_TOP   意图,然后它将完成并重新创建;所有其他发射   模式或如果设置了FLAG_ACTIVITY_SINGLE_TOP,那么此Intent将是   传递给当前实例的onNewIntent()。

答案 1 :(得分:0)

您可以声明目标活动(在您的情况下为活动B)清单文件中的SingleTop模式,如

<activity android:name="YourActivityName" android:launchMode="singleTop"></activity>

然后,导航到此活动的startActivity将结束C和D并且不会启动新的活动B

答案 2 :(得分:0)

在完成C和D的处理后,您可以finish()进行活动。