【问题标题】:Android Realm Migration version number based on what?Android Realm Migration 版本号基于什么?
【发布时间】:2015-04-29 15:02:01
【问题描述】:

我正在进行我的第一次 Realm 迁移并开始考虑版本号。这个版本号基于什么?

因为如果它基于您手机上的内容,如果新人安装该应用并获得迁移,我该如何处理?因为它还会更新由于全新安装而已设置的字段。

【问题讨论】:

    标签: android realm realm-migration


    【解决方案1】:

    来自Realm的Christian。迁移 API 仍处于非常实验性的状态,有点丑陋,所以现在版本号总是以 0 开头,而改变它的唯一方法是通过迁移。

    这意味着,如果您想要使用不同于 0 的版本进行全新安装,您必须执行以下操作:

       // Pseudo code
        public class RealmHelper() {
    
            private static SharedPreferences prefs;
    
            public static Realm getInstance() {
                if (!prefs.getBoolean("versionSet", false)) {
                    String path = new File(context.getFilesDir(), Realm.DEFAULT_REALM_NAME).getAbsolutePath();
                    Realm.migrateRealmAtPath(path, new RealmMigration() {
                                @Override
                                public long execute(Realm realm, long version) {
                                    return 42; // Set version numbers
                                }
                            })
                    prefs.edit().putBoolean("versionSet", true).apply();
                }
    
                return Realm.getInstance();
            }
        }
    

    不过很快就会好很多:https://github.com/realm/realm-java/pull/929

    【讨论】:

    • 我喜欢新 api 的外观!除了版本之外,我对迁移没有太大问题;)。顺便说一句,这是一个很棒的数据库! :)
    【解决方案2】:

    0.84.2 中的领域迁移发生了很大变化(请参阅 Christian 对新 API 的提示),使领域 (0.84.2) 迁移对我有用的关键点是理解:

    • 当您的应用程序有一个没有的领域数据库时,schemaVersion 始终为 0 指定 schemaVersion。在大多数情况下这是正确的,因为你 一旦你开始在配置中使用 schemaVersion 需要迁移并且已经在运行您的应用的实时版本。

    • schemaVersion 会自动存储,并且当您的应用程序全新安装并且您已经处于 schemaVersion 3 领域时 自动检查是否有异常,如果没有则设置 schemaVersion 为 3,因此您的迁移不会在不需要时运行。 这也意味着您不必再存储任何东西 共享首选项。

    • 在迁移中,当类型不可为空时,您必须设置新列的所有值,当前版本的领域,...

    • 可以插入空字符串,但只有在列上设置 convertColumnToNullable 时才能插入

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 1970-01-01
      • 2013-02-05
      • 2023-01-18
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      相关资源
      最近更新 更多