Android:如何为特定版本制作迁移脚本

问题描述 投票:1回答:2

我的应用程序当前发布的versionCode15,并且我想运行一些迁移代码来修复用户在应用程序数据库上的数据(而不是架构结构)。

因此,对于从任何版本小于或等于15升级到任何版本大于或等于16的人员来说,如何只运行一次固定代码?

android database-migration sugarorm android-database
2个回答
1
投票

如果您正在谈论迁移一个sql数据库,那么SQLiteOpenHelper.onUpgrade()是放置迁移代码的正确位置。在这种情况下,您不必依赖versionCode,而是依赖数据库版本号。因此,只需在下一次应用程序更新中增加数据库版本号,SQLiteOpenHelper就会自动调用onUpgrade()。您可以执行查询和表定义。您可以查询整个数据,将其加载到内存中,在内存中处理此数据,更改sql表定义,清除表,然后将(操作/迁移的)数据重新插入到sql表中。

如果您正在谈论迁移其他数据(如共享首选项,外部存储上的文件等),则可以将Application覆盖为覆盖onCreate()。然后,检查是否versionCode == 16并进行迁移,然后您必须存储已成功完成迁移的信息(以免在下次启动应用程序时再次运行迁移)。通过将布尔值标志保存到共享首选项中,我可以做到这一点。


0
投票

对于Sugar ORM,您可以使用迁移脚本来执行升级。此处有更多详细信息。http://satyan.github.io/sugar/migration.html

© www.soinside.com 2019 - 2024. All rights reserved.