首页 > 解决方案 > 在Android上升级Realm数据库库版本的正确方法是什么?

问题描述

我们目前使用 Realm 6.x。但是,当尝试将库更新到最新版本 (10.x) 时,应用程序在打开时崩溃。

在应用程序中,领域当前配置为删除模式更改时的所有数据,并在打开时压缩数据库。但即使使用此设置,应用程序也会崩溃。

大版本更新导致崩溃是正常的吗?

正确的升级方法是什么?是否可以在不丢失数据的情况下做到这一点?

标签: androidrealm

解决方案


好的领域数据库遵循这种方法。


RealmConfiguration config = new RealmConfiguration.Builder(context)
    .schemaVersion(2) // Must be bumped when the schema changes
    .migration(new MyMigration()) // Migration to run
    .build();

Realm.setDefaultConfiguration(config);

// This will automatically trigger the migration if needed
Realm realm = Realm.getDefaultInstance();


public class MyMigration implements RealmMigration {

    @Override
    public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
        RealmSchema schema = realm.getSchema();

        // Migrate from version 0 to version 1
        if (oldVersion == 0) {
            RealmObjectSchema userSchema = schema.get("User");

            userSchema.addField("testRealm", String.class);
            oldVersion++;
        }

        if (oldVersion == 1) { // ...
            // ...
        }
    }

    @Override
    public int hashCode() { return MyMigration.class.hashCode(); }

    @Override
    public boolean equals(Object object) { return object != null && object instanceof MyMigration; }
}

还要考虑 Realm.init(this)设置一个默认的RealmConfiguration并且应该ONLY在里面调用Application.onCreate


推荐阅读