讨论广场 问答详情
Preferences 数据存储,应用多模块读写同一个 Preferences 文件,出现数据错乱、丢失写入
Sweet__Snow 2026-09-04 11:14:18
174 评论 分享
harmonyos

项目有多个 module 模块,不同模块同时读写同一个 Preferences 存储文件,偶尔出现保存的数据丢失,读取到旧值,怀疑并发读写冲突。

174 评论 分享
写回答
全部评论(1)
  1. Preferences 不支持高并发多实例同时读写同一个文件;多个实例同时写会覆盖数据,造成丢失。
  2. 建议全局单例获取 Preferences 实例,整个应用只创建一份实例,不要每个页面都 new 实例。
  3. 修改数据完成之后务必调用 flush () 持久化落盘;不调用 flush 进程直接杀死会内存数据丢失。
  4. 多模块共享数据,推荐统一封装工具类,所有读写逻辑收敛一处,避免到处直接操作 Preferences。
  5. 大量结构化数据不建议使用 Preferences,改用关系型数据库 RDB 存储。
2026-09-04 11:14:39