1

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

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

谢谢!

4

1 回答 1

2

是的,应用程序会崩溃。您需要添加一个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();
于 2017-09-05T17:43:13.303 回答