我们将 Realm 用于我们的应用程序。我们的应用程序已发布测试版。现在我想向我们的一个领域对象添加一个字段。所以我必须写RealmMigration,我也写了一个。这里的问题是如何将此领域迁移应用到我的应用程序。每当我想要某些东西时,我都会使用 Realm.getInstance() 获取领域实例。请记住,Realm.getInstance() 每次都在整个应用程序中使用,我想访问 Realm 数据库。
所以,我有点询问如何应用此迁移?任何线索都会有所帮助。谢谢。
我的 RealmMigration 如下。
public class RealmMigrationClass implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
if(oldVersion == 0) {
RealmSchema sessionSchema = realm.getSchema();
if(oldVersion == 0) {
RealmObjectSchema sessionObjSchema = sessionSchema.get("Session");
sessionObjSchema.addField("isSessionRecordingUploading", boolean.class, FieldAttribute.REQUIRED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("isSessionRecordingUploading", false);
}
});
sessionObjSchema.setNullable("isSessionRecordingUploading",false);
oldVersion++;
}
}
}
}
public class Session extends RealmObject {
@PrimaryKey
private String id;
@Required
private Date date;
private double latitude;
private double longitude;
private String location;
private String note;
private String appVersion;
private String appType;
private String deviceModel;
private HeartRecording heart;
private TemperatureRecording temperature;
private LungsRecording lungs;
@NotNull
private boolean isSessionRecordingUploading;
private boolean sessionInfoUploaded;
private boolean lungsRecordingUploaded;
private boolean heartRecordingUploaded;
}
从 RealmObject 中删除了 Getter 和 Setter 以缩短问题。当我尝试重新安装应用程序而不卸载前一个应用程序时发生异常。请指教。