Android清除活动之间的堆栈

时间:2017-03-20 12:15:43

标签: android android-activity stack

我有4项活动:活动A - >活动B - >活动C - >活动D. 而我想要实现的是从D回到A并清除B和C.这可能吗?如何??

非常感谢。

3 个答案:

答案 0 :(得分:6)

  

如果正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图。

Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Read more here.

答案 1 :(得分:0)

如果活动顺序是固定的(A => B => C => D => A),那么在启动活动C活动之前,您需要调用B的结束,并在启动活动D时调用完成活动C。

startActivityC() 
{
    Intent intent = new Intent(this, C.class);
    ActivityB.this.finish()
    startActivity(intent);
}

从活动D到strart活动A,您可以覆盖onBack of ActivityD以启动活动A

@Override
onBack()
{

    Intent intent = new Intent(this, A.class);

    ActivityD.this.finish()
    startActivity(intent);
}

答案 2 :(得分:0)

如果您的流程始终遵循A => B => C => D => A,你只需要避免在后台堆栈中保存B和C.这样,当您从D返回时,唯一可用的Activity是A.

启动代码Activity B& C:

Intent i = new Intent(...);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); // <= Don't save in back stack
startActivity(i);

启动代码Activity A&amp; d:

Intent i = new Intent(...);
startActivity(i);