首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android onCreate 新參數 PersistableBundle:跨重啟持久化機制詳解

     編輯:程式設計綜合問答

API 21+ 新簽名

@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)**系統關機/重啟**、用戶強制關機**跨裝置重啟永久保留** (寫入磁碟)
onRestoreInstanceStateActivity 重建時 (在 onStart 前)讀取上次持久化資料

關鍵限制

  • 需在 Manifest `` 啟用。
  • 僅支援 API 21+ (Android 5.0)。
  • 資料大小限制 (約 50KB),不宜存大量資料。
  • 不影響一般 Bundle 序列化流程,兩者並行。

實際應用場景

記錄「最後同步時間」、「草稿內容」、「播放進度」等需在裝置重啟後恢復的關鍵狀態。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved