Android 安卓领域迁移版本号基于什么?

Android 安卓领域迁移版本号基于什么?,android,realm,realm-migration,Android,Realm,Realm Migration,我正在进行我的第一次领域迁移,并开始考虑版本号。此版本号基于什么 因为如果它是基于你手机上的内容,如果一个新用户安装了应用程序并获得了迁移,我该如何处理它?因为它还将更新由于新安装而设置的字段。Christian from Realm here。迁移API仍然处于非常实验性的状态,有点难看,所以现在版本号总是以0开头,唯一的改变方法是通过迁移 这意味着,如果您希望使用0以外的其他版本进行新安装,则必须执行以下操作: // Pseudo code public class Realm

我正在进行我的第一次领域迁移,并开始考虑版本号。此版本号基于什么


因为如果它是基于你手机上的内容,如果一个新用户安装了应用程序并获得了迁移,我该如何处理它?因为它还将更新由于新安装而设置的字段。

Christian from Realm here。迁移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();
        }
    }

不过,这很快就会好得多:

0.84.2中的领域迁移发生了很大的变化(请参阅Christian关于新API的提示),让领域(0.84.2)迁移为我工作的关键点是:

  • 当你的应用程序有一个没有的领域db时,SchemaReversion总是0 指定schemaversation。这在大多数情况下都是正确的,因为你 一旦您完成配置,就可能开始在配置中使用schemaVersion 需要迁移&正在运行应用程序的实时版本

  • schemaVersion会自动存储,当您的应用程序重新安装时,您已经在schemaVersion 3,realm上 自动检查是否存在异常,如果没有,则设置 schemaVersion设置为3,以便在不需要时不运行迁移。 这也意味着你不必再在里面储存任何东西了 共享引用

  • 在迁移中,当类型不可为null时,必须设置新列的所有值,当前版本的realm

  • 只能在列上设置convertColumnToNullable时插入空字符串


我喜欢新api的外观!我对迁移没有太大问题,除了版本;)。这是一个很棒的数据库(顺便说一句!)