Android 如何在按下后退按钮时删除堆栈中的所有活动

Android 如何在按下后退按钮时删除堆栈中的所有活动,android,android-studio,android-intent,android-activity,onbackpressed,Android,Android Studio,Android Intent,Android Activity,Onbackpressed,我有一个活动a-B-C-D-E和更多的列表,例如最后的活动是K。我想在按下后退按钮时清除堆栈中的所有这些活动。我该怎么办?事实上,我骑过头了 onBackPress(){ moveTaskToBack(true); finish(); } 但仅删除当前活动并退出应用程序。然后,我返回应用程序,它在K之前恢复活动。我希望它在我重新打开应用程序时从头开始。我认为这里的原因是因为堆栈中的活动列表仍然被存储,所以我想在单击“上一步”按钮时清除所有堆栈。有什么建议吗?多谢各位 使用清单

我有一个活动a-B-C-D-E和更多的列表,例如最后的活动是K。我想在按下后退按钮时清除堆栈中的所有这些活动。我该怎么办?事实上,我骑过头了

onBackPress(){ 
    moveTaskToBack(true);
    finish();
}

但仅删除当前活动并退出应用程序。然后,我返回应用程序,它在K之前恢复活动。我希望它在我重新打开应用程序时从头开始。我认为这里的原因是因为堆栈中的活动列表仍然被存储,所以我想在单击“上一步”按钮时清除所有堆栈。有什么建议吗?多谢各位

使用清单中的
noHistory
标志,或者在用户离开时自己完成每个活动

startActivity(myIntent);
finish();

如果您有这么多重叠的
活动
,另一个解决方案可能是最好的:只使用一个
活动
,并在
片段中处理内容。这样,当用户点击“后退”按钮时,您就可以控制想要显示的内容。

您需要在您的
按钮中使用
标志\u activity\u CLEAR\u TOP来调用您的活动

@Override
public void onBackPressed()
{
    Intent it = new Intent(YouCurrentActivity.this, YourFinalActivity.class);
    it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(it);
    finish();
}

希望有帮助

有一种称为finishafinity()的方法用于完成所有活动

public void onBackPressed(){
  super.onBackPressed();
  this.finishAffinity();}

在API级别11或更高的中,使用
FLAG\u ACTIVITY\u CLEAR\u TASK
FLAG\u ACTIVITY\u NEW\u TASK
FLAG on Intent清除所有活动堆栈。 将此代码添加到
onBackPressed()
方法中

> This launch mode can also be used to
配合使用效果好 标记活动新任务:如果用于 启动任务的根活动,它 将带来任何当前正在运行的 将该任务的实例添加到 前景,然后将其清除到当前位置 根状态。这特别有用,, 例如,在启动 通知中的活动 经理

因此,启动
B
的代码是:

Intent intent = new Intent(A.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); // call this to finish the current activity