Android清除/完成以前的活动,除了一个

时间:2014-06-03 22:30:34

标签: android android-activity activity-finish

在android中我有以下路径:

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

当按下按钮时,我想清除/完成从活动2到N的所有活动,然后转到Acitivy X.换句话说,我想完成所有活动,直至初始One,然后移动到另一个。

如果我使用旗帜:

CLEAR_TOP,CLEAR_TASK,NEW_TASK等

理论上,它将使用初始活动完成所有先前的活动。有没有办法让最初的一个活着并转移到活动X?

2 个答案:

答案 0 :(得分:1)

我不确定我理解这个问题。或者更确切地说,是不能使用FLAG_ACTIVITY_CLEAR_TOP的原因。

  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。

     

例如,考虑一个由活动组成的任务:A,B,C,D。   如果D调用带有解析为的Intent的startActivity()   活动B的组成部分,然后C和D将完成,B接收   给定的Intent,导致堆栈现在为:A,B。

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

  

活动1 - >活动2 - >活动3 - > ...活动N - >按   按钮......

使用Activity2.class 标记FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP启动意图将返回到Activity2的现有实例(而不是创建新实例)并在onNewIntent()中传递新意图。你只需要为这个意图添加一个额外的东西,这样这个方法就会知道它之后应该调用ActivityX。

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

答案 1 :(得分:1)

如果您已经访问过某个活动,但在离开时尚未调用finish() 这样做

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);