Android 如何在按下后退按钮时删除堆栈中的所有活动
我有一个活动a-B-C-D-E和更多的列表,例如最后的活动是K。我想在按下后退按钮时清除堆栈中的所有这些活动。我该怎么办?事实上,我骑过头了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之前恢复活动。我希望它在我重新打开应用程序时从头开始。我认为这里的原因是因为堆栈中的活动列表仍然被存储,所以我想在单击“上一步”按钮时清除所有堆栈。有什么建议吗?多谢各位 使用清单
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