Android 基于什么的Realm Migration 版本号?
Android Realm Migration version number based on what?
我正在进行第一次 Realm 迁移,并开始考虑版本号。这个版本号是基于什么?
因为如果它是基于你的 phone 上的内容,如果新人安装该应用程序并进行迁移,我该如何处理?因为它还会更新由于全新安装而已经设置的字段。
这里是 Realm 的基督徒。迁移 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) 迁移对我有用的关键点是理解:
当你的应用程序有一个没有领域数据库时,schemaVersion 总是 0
指定 schemaVersion。在大多数情况下这是真的,因为你
一旦你可能开始在配置中使用 schemaVersion
需要迁移并且已经 运行 发布了您的应用程序。
schemaVersion 会自动存储,当您的应用程序进行全新安装并且您已经在 schemaVersion 3 时,realm
自动检查是否有异常,如果没有则设置
schemaVersion 为 3,这样您的迁移就不会在不需要时 运行。
这也意味着您不必再存储任何东西
SharedPreferences.
在迁移中,当类型不可为空时,您必须设置新列的所有值,当前版本的领域,...
可以插入空字符串,但仅当在列上设置 convertColumnToNullable 时才可以插入
我正在进行第一次 Realm 迁移,并开始考虑版本号。这个版本号是基于什么?
因为如果它是基于你的 phone 上的内容,如果新人安装该应用程序并进行迁移,我该如何处理?因为它还会更新由于全新安装而已经设置的字段。
这里是 Realm 的基督徒。迁移 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) 迁移对我有用的关键点是理解:
当你的应用程序有一个没有领域数据库时,schemaVersion 总是 0 指定 schemaVersion。在大多数情况下这是真的,因为你 一旦你可能开始在配置中使用 schemaVersion 需要迁移并且已经 运行 发布了您的应用程序。
schemaVersion 会自动存储,当您的应用程序进行全新安装并且您已经在 schemaVersion 3 时,realm 自动检查是否有异常,如果没有则设置 schemaVersion 为 3,这样您的迁移就不会在不需要时 运行。 这也意味着您不必再存储任何东西 SharedPreferences.
在迁移中,当类型不可为空时,您必须设置新列的所有值,当前版本的领域,...
可以插入空字符串,但仅当在列上设置 convertColumnToNullable 时才可以插入