Activity A 啟動 Activity B,調用 `finish()` 銷毀 A,但按返回鍵卻回到桌面主頁,而非預期的退出應用或回到上一個 Activity。
`finish()` 僅銷毀當前 Activity 實例,返回邏輯由**任務棧**決定:
// A 中啟動 B
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
finish(); // A 銷毀,B 成為棧底,按返回退出應用
確保啟動 A 時棧中已有 C(如 C → A → B)。或在 Manifest 設置 A `android:noHistory="true"`,自動銷毀。
若 A 或 B 設置 `launchMode="singleTask"`/`singleInstance`,會改變任務棧結構,導致 `finish()` 行為異常。檢查 Manifest,按需改為 `standard`。
// 在 B 中彈出退出確認對話框,確認後:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); // 回桌面
// 或 Android 4.1+:
finishAffinity(); // 銷毀當前任務棧所有 Activity
System.exit(0); // 徹底殺死進程(不推薦常規使用)