Android Realm.io迁移:回退到.deleteRealmIfMigrationNeeded()

Juh*_*ani 2 android realm

将Android Realm.io实例迁移到较新的模式时,我在迁移实现中提供了迁移步骤:

  RealmConfiguration config = new RealmConfiguration
            .Builder(this)
            .schemaVersion(SCHEMA_VERSION)
            .migration(new Migration())
            .build();
Run Code Online (Sandbox Code Playgroud)

我想要在实际的迁移代码中做什么,我想回溯到deleteRealmIfMigrationNeeded较旧的模式版本.

有没有办法做到这一点?我试图这样做,deleteAll()但这似乎不起作用,因为有些人从旧版本的应用程序更新正在获得Realm验证错误.

public class Migration implements RealmMigration {
    @Override
    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {

        if (oldVersion < 105) {
            realm.deleteAll();
            return;
        }

        //handle newer schema versions


    }
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ior 5

您可以尝试以动态模式打开Realm并询问它的版本.DynamicRealms不会触发迁移:

RealmConfiguration config = new RealmConfiguration
            .Builder(this)
            .schemaVersion(SCHEMA_VERSION)
            .migration(new Migration())
            .build();

// Use DynamicRealm to find version and delete it if it is too old
DynamicRealm dRealm = DynamicRealm.getInstance(config);
boolean delete = dRealm.getVersion() < 42;
dRealm.close();
if (delete) {
  Realm.deleteRealm(config);
}

Realm realm = Realm.getInstance(config);
Run Code Online (Sandbox Code Playgroud)