SharedPreferences最後一次寫入斷電不保存問題記錄

現象:

連續幾次將數據寫入SharedPreferences保存後斷電。斷電前可以看到/data/data/package_name/shared_prefs/*.xml 文件內容已修改爲最後一次寫入數據。上電後在執行讀取數據操作前,/data/data/package_name/shared_prefs/*.xml的內容始終爲最後一次寫入內容,但執行讀取操作時,xml中內容改變,變爲最後一次寫入之前的數據

原因:

使用sharedpreference保存文件後掉電會出現異常,是由於sharedpreference在保存記錄的時候會生成一個bak文件,當保存完成後會刪除這個文件,但是刪除的時機不確定,這個時候掉電會導致文件沒有刪除,再次開機後使用sharedpreference時會將源文件刪除,將bak文件替換成源文件,就會出現文件沒有保存上的情況。
可參照原文鏈接:https://blog.csdn.net/m0_37732679/article/details/104047681

對策:在數據提交後,執行shelll命令sync會立刻更新,bak文件將會被刪除

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(KeyName, floatArrayToStr(array));
editor.apply();

try {
    /* 對應斷電數據保存丟失問題 */
    Runtime.getRuntime().exec("sync");
}
catch (IOException e)
{
    e.printStackTrace();
}

拓展:關於SharedPreferences的更多詳細內容學習
原文鏈接:https://blog.csdn.net/fanxudonggreat/article/details/80877469

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章