Android清除活动之间的后台堆栈

Android清除活动之间的后台堆栈,android,android-activity,stack,Android,Android Activity,Stack,我有4个活动:活动A->活动B->活动C->活动D 我想要实现的是从D回到A,清除B和C。这可能吗??怎么做 非常感谢。如果活动的顺序是固定的(a=>B=>C=>D=>a),那么在启动活动C活动之前,您需要调用B的finish,在启动活动D时调用活动C的finish startActivityC() { Intent intent = new Intent(this, C.class); ActivityB.this.finish() startActivity(int

我有4个活动:活动A->活动B->活动C->活动D 我想要实现的是从D回到A,清除B和C。这可能吗??怎么做


非常感谢。

如果活动的顺序是固定的(a=>B=>C=>D=>a),那么在启动活动C活动之前,您需要调用B的finish,在启动活动D时调用活动C的finish

startActivityC() 
{
    Intent intent = new Intent(this, C.class);
    ActivityB.this.finish()
    startActivity(intent);
}
从活动D到strart活动A,您可以覆盖活动D的背面以启动活动A

@Override
onBack()
{

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

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

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

开始活动的代码B&C:

Intent i = new Intent(...);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); // <= Don't save in back stack
startActivity(i);
如果正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是关闭其上的所有其他活动,并将此意图作为新意图传递给(现在位于顶部的)旧活动


您不想让活动B和C在后堆栈中?如果您永远不会从D返回到B和C,请不要将B和C保存在后堆栈中,这样,当您在D中按back时,您将直接跳到A。是否必须返回到B或C?如果没有,我可以提供你的解决方案。依我看,这种方法一点也不优雅。
Intent i = new Intent(...);
startActivity(i);
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);