清除活動堆疊

有時你可能希望在從後臺堆疊中刪除以前的活動時啟動新活動,因此後退按鈕不會將你帶回到它們。這方面的一個例子可能是在 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);