Preferences 数据存储,应用多模块读写同一个 Preferences 文件,出现数据错乱、丢失写入
harmonyos
项目有多个 module 模块,不同模块同时读写同一个 Preferences 存储文件,偶尔出现保存的数据丢失,读取到旧值,怀疑并发读写冲突。
您需要先 登录 才能评论/回答
全部评论(1)
- Preferences 不支持高并发多实例同时读写同一个文件;多个实例同时写会覆盖数据,造成丢失。
- 建议全局单例获取 Preferences 实例,整个应用只创建一份实例,不要每个页面都 new 实例。
- 修改数据完成之后务必调用 flush () 持久化落盘;不调用 flush 进程直接杀死会内存数据丢失。
- 多模块共享数据,推荐统一封装工具类,所有读写逻辑收敛一处,避免到处直接操作 Preferences。
- 大量结构化数据不建议使用 Preferences,改用关系型数据库 RDB 存储。
2026-09-04 11:14:39