以為 Intent 跳轉會自動「重新建立」Activity 並重置變量。實則:
onRestart → onStart → onResume,**不會重新執行 onCreate**。public class MyActivity extends AppCompatActivity {
private int counter = 0;
private List dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
// ✅ 這裡才是真正的「重置入口」
counter = 0;
dataList = new ArrayList<>();
loadData(); // 重新載入資料
}
// ❌ 不要在 onStart/onResume 重置,會導致切換回前台時資料閃爍或重複載入
}
@Override
protected void onResume() {
super.onResume();
refreshUI(); // 僅更新 UI 顯示,不重置核心狀態
}
// 呼叫端
Intent intent = new Intent(this, MyActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish(); // 結束當前實例
android:configChanges="orientation|screenSize|locale" 並覆寫 onConfigurationChanged。onSaveInstanceState 保存臨時狀態,onCreate 中 savedInstanceState != null 時恢復。**變量重置請寫在 onCreate**,這是 Activity 生命週期中唯一保證「從零開始」的回調。跳轉邏輯請配合 Intent Flag 控制任務棧行為,而非期望框架自動重置。