應用圖標菜單項點擊啟動 Activity,若已在運行則不應創建新實例,而是將現有實例帶到前台。
Intent intent = new Intent(this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
若目標 Activity 已存在於任務棧中,此 Flag 會將其移動到棧頂並觸發 onNewIntent,不創建新實例。配合 singleTop launchMode 效果最佳。
FLAG_ACTIVITY_CLEAR_TOP:清除目標之上的所有 Activity。FLAG_ACTIVITY_SINGLE_TOP:棧頂已存在則不創建(等同 singleTop)。REORDER_TO_FRONT:無論位置,移至棧頂,保留上下文。<activity android:name=".TargetActivity" android:launchMode="singleTop" />
靜態聲明更清晰,動態 Flag 適合條件啟動場景。