Мы используем Realm для нашего приложения. Наше приложение было выпущено в бета-версии. Теперь я хочу добавить поле в один из наших объектов области. Поэтому я должен написать RealmMigration, и я тоже написал. Вопрос здесь в том, как применить эту миграцию Realm к моему приложению. Я использую Realm.getInstance(), чтобы получить экземпляр области, когда захочу. Помните, Realm.getInstance() используется во всем приложении каждый раз, я хочу получить доступ к базе данных Realm.
Итак, я немного спросил, как применить эту миграцию? Любые выводы могут быть полезны. Спасибо.
My 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;
}
Убрал Getter и Setters из RealmObject, чтобы прервать вопрос. Исключение произошло, когда я пытаюсь переустановить приложение, не удаляя предыдущий. Пожалуйста, совет.