使用标志来控制活动生命周期

时间:2013-12-09 16:14:08

标签: android android-activity android-lifecycle

假设我有以下活动:

  • 活动A
  • 活动B
  • 活动C
  • 活动D

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的旧实例,在堆栈顶部。

1 个答案:

答案 0 :(得分:1)

取出标志Intent.FLAG_ACTIVITY_SINGLE_TOP。来自docs

上面示例中当前运行的活动B实例将在其onNewIntent()方法中接收您从此处开始的新意图,或者本身已完成并使用新意图重新启动。如果它已将其启动模式声明为“多个”(默认值)并且您没有在同一意图中设置FLAG_ACTIVITY_SINGLE_TOP,那么它将被完成并重新创建;对于所有其他启动模式或者如果设置了FLAG_ACTIVITY_SINGLE_TOP,则此Intent将被传递到当前实例的onNewIntent()。