完成多个活动以恢复堆叠中的旧活动?

时间:2014-06-11 05:22:37

标签: android android-intent android-activity

我需要在堆栈中完成多个活动并恢复旧的活动。例如,

堆栈Act1,Act2,Act3和Act4中有四个活动。在Act4的某些事件中,我需要完成Act4,Act3和Act2以恢复Act1。

我尝试使用Intet.FLAG_ACTIVITY_CLEAR_TOP,但它正在重新创建不是我要求的活动。

感谢您的建议。

3 个答案:

答案 0 :(得分:1)

您已经使用了Clear_top,它将清除所有活动并将act1带到前面,但是,onNewIntent方法将调用您的活动,您可以在活动再次启动后执行您想要的任何任务。 或者,你可以使用标志FLAG_ACTIVITY_REORDER_TO_FRONT与你的意图,它会做:

FLAG_ACTIVITY_REORDER_TO_FRONT执行此操作:如果在传递给Context.startActivity()的Intent中设置,则此标志将导致已启动的活动被带到其任务的历史堆栈的前面(如果它已在运行)。

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

有关标志外观的更多信息   http://developer.android.com/reference/android/content/Intent.html

答案 1 :(得分:1)

  

堆栈Act1,Act2,Act3和Act4中有四个活动。一些   在Act4中,我需要完成Act4,Act3和Act2以恢复Act1。

这样做:

Intent intent =  new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
startActivity(intent);
finish();

答案 2 :(得分:0)

使用android:launchMode,会没问题。

<Act1
...
android:launchMode="singleTask">