我想知道当用户更新Android应用时Realm会发生什么。 我有一个Android应用程序,其中包含一些从RealmObject扩展的类。我用它们来保存我的应用程序的信息。 问题是,当我将新类定义为RealmObject,并且我直接从Android Studio运行应用程序时,应用程序崩溃:此Realm的架构中缺少MyRealmClass类。 我必须卸载以前的版本,然后运行应用程序来解决它。
当用户从Play商店更新应用并且新版本有新的Realm类时会发生什么? 应用会崩溃吗?如果是这样,有什么方法可以解决它吗?
谢谢!
答案 0 :(得分:1)
是的,应用程序会崩溃。您需要添加RealmMigration类。
public class CustomMigration implements RealmMigration {
@Override
public long migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if (oldVersion == 0) {
// Migrate from v0 to v1
schema.create("myNewTable"); // example
oldVersion++;
}
if (oldVersion == 1) {
// Migrate from v1 to v2
oldVersion++;
}
if (oldVersion < newVersion) {
throw new IllegalStateException(String.format(Locale.US, "Migration missing from v%d to v%d", oldVersion, newVersion));
}
}
}
和
RealmConfiguration config = new RealmConfiguration.Builder(context)
.schemaVersion(2)
.migration(new MyMigration())
.build();
Realm.setDefaultConfiguration(config);
// This will automatically trigger the migration if needed
Realm realm = Realm.getDefaultInstance();