清除活动堆栈

有时你可能希望在从后台堆栈中删除以前的活动时启动新活动,因此后退按钮不会将你带回到它们。这方面的一个例子可能是在 Login 活动上启动应用程序,将你带到应用程序的 Main 活动,但在注销时,你希望被定向回 Login 而无法返回。在这种情况下,你可以为 intent 设置 FLAG_ACTIVITY_CLEAR_TOP 标志,这意味着如果正在启动的活动已经在当前任务(LoginActivity)中运行,那么所有其他活动都不会启动该活动的新实例它将被关闭,这个 Intent 将被作为新的 Intent 传递给(现在在顶部)旧活动。

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

如果要清除后台堆栈上的所有活动,也可以使用标志 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TASK

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
// Closing all the Activities, clear the back stack.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);