现象:
连续几次将数据写入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