Flutter应用使用HiveDB在Play Store更新时会丢失本地数据吗?
HiveDB Flutter应用更新数据丢失问题解答
常规迭代更新发布到Play Store的场景下,原有HiveDB存储的用户本地数据不会丢失。
HiveDB默认将数据存储在Android应用的私有沙盒目录中,Google Play的应用更新机制只会替换APK对应的程序资源、代码文件,不会主动修改或清除应用私有目录下的用户数据,这是Android系统默认的应用更新规则。
可能触发数据丢失的特殊场景
只有出现以下情况时才可能出现更新后数据丢失的问题:
- 新版本代码中主动调用了Hive的数据删除API,比如
Hive.deleteBoxFromDisk()、Hive.clear(),且未做对应的版本兼容判断 - Hive存储的对象结构发生破坏性变更,且没有配置适配旧数据的迁移逻辑:比如修改了原有字段的类型、删除了旧字段、复用了已使用过的
@HiveField序号,会导致旧数据读取失败,表现为数据丢失 - 新版本修改了Hive初始化时指定的存储路径,且没有做旧路径数据的迁移逻辑,导致新版本无法读取旧版本存储的数据
- 用户手动在系统设置中清理了应用的存储数据,或者系统存储空间不足时自动清理了应用私有目录,这类情况和更新逻辑、Hive本身无关
避免更新丢失数据的注意事项
- 每次修改Hive存储的对象结构时,要正确升级对应
@HiveType的版本号,编写对应的数据迁移逻辑,不要复用已使用过的@HiveField序号 - 不要在应用初始化阶段默认执行全局的Box清除、删除操作,这类操作必须加严格的版本判断或者用户主动触发的逻辑
- 如需修改Hive的默认存储路径,必须补充旧路径到新路径的数据迁移逻辑,不要直接修改路径后放弃读取旧数据
内容的提问来源于stack exchange,提问作者SuPythony
相关产品推荐
相关产品推荐

