繁体   English   中英

完成多项活动以恢复堆栈中的旧活动?

[英]Finishing multiple activities to resume an old one in stack?

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

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

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

提前感谢您的建议。

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

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

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

有关标志的更多信息,请查看http://developer.android.com/reference/android/content/Intent.html

堆栈 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();

使用 android:launchMode,就可以了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM