如何实现此行为:
假设我有活动A
然后我开始流程并进行活动A,B,C,D
如果在D中成功,它将启动活动E,堆栈将为A,B,C,D,E
我想要的是堆栈是A,E所以B,C,D将从中间移除。
答案 0 :(得分:2)
ArrayList<Activity> activities =new ArrayList<Activity>();
创建并将所有活动添加到此。当你需要关闭它们时输入:
activities.get(YOUR_ITEM_INDEX).finish();
我认为这样可以解决问题
让我知道结果
答案 1 :(得分:0)
从B完成B开始活动C时,如从C完成C开始D,现在开始E完成D.最后,你只有堆栈中的活动A和E.
答案 2 :(得分:0)
B,C,D和E应该从结果中的活动开始,并在OnActivityResult方法中完成。然后使用finish()覆盖E活动中的后退按钮(或者单击按钮时完成E活动)可以解决问题,当从E向后按时,您将返回到A
答案 3 :(得分:0)
您只需要确定我的活动可以采用的历史路径,并在用户执行应该“展开”我的活动堆栈的操作时调用finish()
。
您还可以在 AndroidManifest.xml 中查看FLAG_ACTIVITY_NO_HISTORY / FLAG_ACTIVITY_CLEAR_TOP或使用android:noHistory="true"
。
答案 4 :(得分:0)
请参阅http://developer.android.com/reference/android/content/Intent.html中的FLAG_ACTIVITY_CLEAR_TOP
。它适合您的需求吗?