【问题标题】:Android: how to make a migration script for a specific versionAndroid:如何为特定版本制作迁移脚本
【发布时间】:2015-06-07 20:37:33
【问题描述】:

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

那么,对于从任何版本小于或等于15升级到任何版本高于或等于16的人,如何只运行一次修复代码?

【问题讨论】:

    标签: android database-migration sugarorm android-database


    【解决方案1】:

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

    如果您正在谈论迁移其他数据(如共享首选项、外部存储上的文件等),那么您可以将Application 子类化为覆盖onCreate()。然后你检查versionCode == 16 并做你的迁移工作,然后你必须存储迁移成功的信息(在下一次应用启动时不再重新运行迁移)。我会通过将布尔标志保存到共享首选项中来实现这一点。

    【讨论】:

    • 由于我担心运行一些java代码进行升级,所以我已经想到了类似于你的第二个建议的东西,我正在尝试并会告诉你
    【解决方案2】:

    对于 Sugar ORM,您可以使用迁移脚本来执行升级。更多细节在这里..http://satyan.github.io/sugar/migration.html

    【讨论】:

    • 我知道了 Sugar 迁移,问题是我想在迁移之后触发一个 Sync Adapter,而 Sugar 迁移只是一个 sql 文件。
    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2020-07-03
    • 2021-03-19
    相关资源
    最近更新 更多