У меня возникает проблема, которая пытается перенести старую структуру Realm в новую, с новым объектом RealmObject и параметрами. Дело в том, что приложение уже находится в Google Play, поэтому пользователи уже хранят определенные данные в некоторых таблицах. Цель состоит в том, чтобы восстановить данные перед удалением базы данных области и сохранить ее где-то в другом месте. Я нахожусь в дилемме о том, что делать прямо сейчас.Резервное копирование и миграция в реальном времени на новую версию
Чтобы попытаться решить эту проблему, я реализовал следующие в моем классе Application:
RealmMigration migration = new RealmMigration(){
@Override
public void migrate(...){
if(oldVersion == 0){
//Get the data from realm and store somewhere else
}
}
}
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
.schemaVersion(1)
.migration(migration)
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(realmConfiguration);
Realm.getInstance(realmConfiguration);
Проблема здесь состоит в том, что делает это, метод deleteRealmIfMigrationNeeded() выполняется и миграция() не является, то все данные теряются, прежде чем я смогу получить данные из базы данных. Я хочу, чтобы при обновлении приложения я мог получить версию из базы данных, сравнить, если она является старой версией и сохранить данные из Realm в файле, а затем выполнить deleteRealmIfMigrationNeeded(), чтобы избежать RealmMigrationNeededException.
я уже смотрел на следующие ссылки:
How to backup Realm DB in Android before deleting the Realm file. Is there any way to restore the backup file?
Realm not auto-deleting database if migration needed
https://github.com/realm/realm-cocoa/issues/3583