我有4项活动:活动A - >活动B - >活动C - >活动D. 而我想要实现的是从D回到A并清除B和C.这可能吗?如何??
非常感谢。
答案 0 :(得分:6)
如果正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图。
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 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);