Android清除/完成以前的活动(一个除外)

Android清除/完成以前的活动(一个除外),android,android-activity,activity-finish,Android,Android Activity,Activity Finish,在android中,我有以下路径: 活动1->活动2->活动3->。。。活动N->按下按钮 按下按钮后,我想清除/完成从活动2到N的所有活动,然后转到活动X。换句话说,我想完成所有活动,直到第一个活动,然后转到另一个活动 如果我使用标志: 清除顶部、清除任务、新任务等 理论上,它将用最初的一个来完成之前的所有活动。有没有办法让第一个保持活动状态并转到活动X?我不确定我是否理解这个问题。或者更确切地说,无法使用标记活动\u清除\u顶部的原因 如果已设置,则正在启动的活动已在中运行 当前任务,而不是

在android中,我有以下路径:

活动1->活动2->活动3->。。。活动N->按下按钮

按下按钮后,我想清除/完成从活动2到N的所有活动,然后转到活动X。换句话说,我想完成所有活动,直到第一个活动,然后转到另一个活动

如果我使用标志:

清除顶部、清除任务、新任务等


理论上,它将用最初的一个来完成之前的所有活动。有没有办法让第一个保持活动状态并转到活动X?

我不确定我是否理解这个问题。或者更确切地说,无法使用
标记活动\u清除\u顶部的原因

如果已设置,则正在启动的活动已在中运行 当前任务,而不是启动该任务的新实例 活动,其上的所有其他活动都将关闭,并且 此意图将作为一个整体传递给(现在位于顶部)旧活动 新的意图

例如,考虑一个由活动组成的任务:A、B、C、D. 如果D调用startActivity()的目的是解决 活动B的组件,然后C和D将完成,B将收到 给定的意图,导致堆栈现在为:A,B

如果我理解正确,那正是你想要的。特别是,

活动1->活动2->活动3->。。。活动N->press 按钮

使用
Activity2.class
标志
FLAG\u ACTIVITY\u CLEAR\u TOP | FLAG\u ACTIVITY\u SINGLE\u TOP
启动意图将返回到现有的Activity2实例(而不是创建新实例),并在
onNewIntent()
中传递新意图。您只需要在这个意图中添加一个额外的内容,这样这个方法就知道应该在之后调用ActivityX


也就是说,除非我遗漏了什么

如果您已经访问了某个活动,并且在离开时没有调用
finish()
,那么 这样做


您好,您是否尝试使用FLAG_ACTIVITY_REORDER_to_FRONT?它会将正在运行的活动实例(如果有)带到堆栈顶部,然后您可以清除所有订单并继续。。。这可能是一个解决方案,但我不知道它是否适用于您。还有,检查一下这个:嗯,我认为这是个好主意。因此,我必须用clear_top启动Activity 1,并传递一个额外的消息,告诉它在启动后移动到Activity X。尽管用户必须等待两个活动加载。另一个问题是,第一个活动必须知道活动X的所有“额外内容”并传递它们back@Panos用户实际上不必等待Activity1(我以为是2)如果您传入single_top,现有的将被带回到前面。而且它也不需要知道所有额外的内容,您可以在
onNewIntent()
中使用
intent.putExtras(src)
来复制它们。
finish();
Intent mIntent = new Intent(Create_Your_Pizza.this, MainActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);;

mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);