我有活动A - > B - > C - > D.如何从活动D清算C和D中打开现有的B?我最终会得到A - > B.我不想重新创建一个新的B.
答案 0 :(得分:3)
我认为您必须使用FLAG_ACTIVITY_CLEAR_TOP
和FLAG_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()
进行活动。