2016-05-09 72 views
2

因此,Activity.onCreate()Bundle作爲參數,默認情況下它被稱爲savedInstanceState。應用程序更新到更新版本時是否保留savedInstanceState? (讓我們通過Google Play說)。我可以在savedInstanceState中添加一些數據,將應用程序更新爲新版本,並仍然可以訪問數據?是否在更新期間保存savedInstanceState?

+1

我懷疑它是否保留,因爲不能保證任何自定義的Parcelable類在舊版和新版應用程序版本之間是一致的。話雖如此,我還沒有測試過這種情況。 – CommonsWare

回答

1

保存的實例數據在應用程序更新期間不會保留。這實際上是有意義的,不僅因爲不同版本之間的數據類型潛在的不兼容風險,還因爲您的新二進制文件可能只是完全新的應用程序,僅共享packageId和簽名證書。這就是爲什麼新版本需要重新啓動 - 更新後用戶將從新的狀態開始,因爲這比嘗試將應用恢復到更新開始前的狀態(這可能根本不可能)要安全得多。

因此,如果您希望數據不受更新影響,數據庫或共享首選項是更好的選擇。

1

documentation狀態:

如果系統破壞活動由於系統 約束(而不是正常的應用程序的行爲),那麼雖然 實際活動情況消失後,系統會記住它的存在 例如,如果用戶導航回到該位置,系統將使用一組保存的數據創建一個新的活動實例,該組數據描述活動在銷燬時的狀態。系統用於恢復先前狀態的已保存數據稱爲「實例 狀態」,並且是存儲在Bundle 對象中的鍵值對的集合。

但是沒有提及如果應用程序在更新時被殺死會發生什麼。

您應該使用SharedPreferences來安全地保存信息。

相關問題