@Override
protected void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
// ...
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
// 寫入需跨重啟保留的資料
outPersistentState.putLong("last_sync", System.currentTimeMillis());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onRestoreInstanceState(savedInstanceState, persistentState);
long lastSync = persistentState.getLong("last_sync", 0);
}
| 方法 | 觸發場景 | 資料存活 |
|---|---|---|
| onSaveInstanceState(Bundle) | Home 鍵、鎖屏、新 Activity、旋轉 | 進程存活期間 |
| onSaveInstanceState(PersistableBundle) | **系統關機/重啟**、用戶強制關機 | **跨裝置重啟永久保留** (寫入磁碟) |
| onRestoreInstanceState | Activity 重建時 (在 onStart 前) | 讀取上次持久化資料 |
Bundle 序列化流程,兩者並行。記錄「最後同步時間」、「草稿內容」、「播放進度」等需在裝置重啟後恢復的關鍵狀態。