HarmonyOS 鸿蒙Next Preferences 保存数据之后重启app数据丢失

HarmonyOS 鸿蒙Next Preferences 保存数据之后重启app数据丢失 【设备信息】Mate60
【API版本】Api12
【DevEco Studio版本】5.0.3.814

  1. preferences.getPreferences获取preferences对象
  2. Preferences.put保存数据,数据类型为字符串
  3. Preferences.getSync 获取数据,获取到的为之前保存的字符串
  4. 重启app
  5. Preferences.getSync 获取数据,获取到的为空字符串
4 回复

1、preferences存入数据到Preferences实例后,需要使用flush()方法实现数据持久化,请检查一下是否有调用flush方法,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-preferences-V5#flush

2、另外,DevEco Studio每次run项目(执行的命令都是先卸载当前推的hap包,再把要run的项目的hap包推上去),应用都会被卸载,其在设备上产生的数据库文件及临时文件也会被移除。 如果需要保存数据,可以在‘Run/Debug Configurations’-‘General’-‘Installation Options’-中勾选‘Keep Application Data’。

3、首选项存储沙箱路径为:data/app/el2/100/base/<bundleName>/haps/entry/preferences,在DevEco Studio中可通过右下角的Device File Browser查看设备文件是否正常保存。

更多关于HarmonyOS 鸿蒙Next Preferences 保存数据之后重启app数据丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


应该是没flush吧

在HarmonyOS中,Preferences用于存储应用的轻量级数据。如果使用Preferences保存数据后,在重启应用时发现数据丢失,可能的原因包括:

  • 未正确调用flushcommit:在保存数据后,必须调用flush()commit()方法,确保数据写入存储。flush()是异步操作,commit()是同步操作。

  • 应用数据被清除:如果应用数据被手动清除或通过代码调用delete()方法,Preferences中的数据会被删除。

  • 应用卸载或更新:卸载或更新应用可能导致Preferences数据丢失,因为应用数据目录会被删除或重置。

  • 多进程访问冲突:如果多个进程同时访问同一Preferences文件,可能导致数据不一致或丢失。建议使用MODE_MULTI_PROCESS模式。

  • 存储空间不足:设备存储空间不足可能导致数据无法正常写入或读取。

  • 系统异常或崩溃:系统异常或应用崩溃可能导致数据未正确保存。

  • 权限问题:如果应用没有足够的存储权限,可能导致数据无法保存。

  • Preferences文件损坏:文件损坏可能导致数据无法读取。

确保在保存数据时正确调用flushcommit,并检查应用数据是否被清除或损坏。多进程访问时,使用MODE_MULTI_PROCESS模式以避免冲突。

回到顶部