当用户从商店更新Android应用时,Realm数据库会发生什么变化?

时间:2017-09-05 17:23:52

标签: android google-play realm realm-mobile-platform android-update-app

我想知道当用户更新Android应用时Realm会发生什么。 我有一个Android应用程序,其中包含一些从RealmObject扩展的类。我用它们来保存我的应用程序的信息。 问题是,当我将新类定义为RealmObject,并且我直接从Android Studio运行应用程序时,应用程序崩溃:此Realm的架构中缺少MyRealmClass类。 我必须卸载以前的版本,然后运行应用程序来解决它。

当用户从Play商店更新应用并且新版本有新的Realm类时会发生什么? 应用会崩溃吗?如果是这样,有什么方法可以解决它吗?

谢谢!

1 个答案:

答案 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();