Intent intent = new Intent(context, MyClass.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish(); // 期望結束當前 Activity
MyClass)**之上**的所有 Activity。MyClass 已在棧中(標準 launchMode),則將其移至棧頂,銷毀它上面的實例;若不在棧中,則創建新實例入棧。startActivity 的那個)若在 MyClass **之下**,則**不會被銷毀**,故 finish() 看似不生效實則未被 CLEAR_TOP 波及。MyClass 為 singleTop/singleTask,行為不同(不銷毀重建,走 onNewIntent)。finish() 調用於正確的 Activity 實例(ThisActivity.this.finish()),而非其他引用。
// API 16+ (Android 4.1+)
Intent intent = new Intent(context, MyClass.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
// 當前 Activity 及整個任務棧被清空,MyClass 成為新任務根
// 無需調用 finish(),系統自動處理
CLEAR_TASK 需配合 NEW_TASK 使用,會銷毀任務中**所有** Activity。
Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
startActivity(intent);
finish(); // 正常銷毀 CurrentActivity,返回鍵可回到 PreviousActivity
CLEAR_TOP ≠ 清空棧,僅清目標之上。CLEAR_TASK | NEW_TASK。finish() 若不生效,檢查是否調用於正確實例、是否被 CLEAR_TOP 邏輯保護。