我需要在堆栈中完成多个活动并恢复旧的活动。例如,
堆栈Act1,Act2,Act3和Act4中有四个活动。在Act4的某些事件中,我需要完成Act4,Act3和Act2以恢复Act1。
我尝试使用Intet.FLAG_ACTIVITY_CLEAR_TOP,但它正在重新创建不是我要求的活动。
感谢您的建议。
答案 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">