假设我有以下活动:
A呼叫B,B呼叫C和C呼叫D,所以我的堆栈从上到下依次为D-C-B-A。
现在我希望从D调用活动B以获得以下堆栈:
B-A
其中B不是初始堆栈配置中的先前实例(D-C-B-A),但是是新实例。
我必须使用FLAG_ACTIVITY_
什么?
我尝试过使用它:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
但是这给了我活动B的旧实例,在堆栈顶部。
答案 0 :(得分:1)
取出标志Intent.FLAG_ACTIVITY_SINGLE_TOP。来自docs:
上面示例中当前运行的活动B实例将在其onNewIntent()方法中接收您从此处开始的新意图,或者本身已完成并使用新意图重新启动。如果它已将其启动模式声明为“多个”(默认值)并且您没有在同一意图中设置FLAG_ACTIVITY_SINGLE_TOP,那么它将被完成并重新创建;对于所有其他启动模式或者如果设置了FLAG_ACTIVITY_SINGLE_TOP,则此Intent将被传递到当前实例的onNewIntent()。