从活动堆栈中删除活动并启动所请求活动的新实例

时间:2014-01-29 08:08:46

标签: android android-intent android-activity android-lifecycle

在我的Android应用程序中,我有以下简单的场景:

活动A调用活动B,因此活动堆栈是(从上到下):

B - A

现在我想从B打电话给A,完成B活动。

如果我简单地使用finish(),活动B将完成,但A仍然处于他之前的状态。相反,我希望A处于初始状态。所以我想完成上一个活动A的实例并创建一个新的实例(从堆栈中删除B)

我该如何执行此任务?

1 个答案:

答案 0 :(得分:3)

使用标记startActvitity在B中调用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) A。

  

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

     

例如,考虑一个由活动组成的任务:A,B,C,D。如果D调用带有解析为活动B组件的Intent的startActivity(),那么C和D将完成并且B接收给定的Intent,导致堆栈现在为:A,B。