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