Мне нужно сохранить некоторые данные и загрузить их немедленно на сервер (объектный сервер Realm), поскольку функция, инкапсулированная в классе репозитория, должна закрывать Realm сразу после транзакции.
Что происходит, когда я закрываю областьчто у меня нет изменений на сервере (когда область остается открытой, у меня есть изменения), это противоположно тому, что говорит документ:
// Загрузка будет продолжаться в фоновом режиме, даже если мы // немедленно закройте Царство.Realm.getInstance (конфигурация) .close ();
документы
Итак, я пытаюсь использовать uploadAllLocalChanges()
, но это трудная работа, когда область закрыта, так какой смысл в этомметод (когда область открывается, он обновляется автоматически без этого метода)?но это все еще полезно, потому что я могу закрыть область, когда изменения обновляются, но небольшая функция превращается в большой беспорядок с потенциальными ошибками.
public void editRealm(String projectName, String newName, ResultCallback<Void> callback) {
Realm.getInstanceAsync(getSharedConfiguration(), new Realm.Callback() {
@Override
public void onSuccess(@NonNull Realm realm) {
Alias alias = new Alias();
alias.setId(projectName);
alias.setName(newName);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(@NonNull Realm realm1) {
realm1.insertOrUpdate(alias);
}
});
uploadAllLocalChanges(getSharedConfiguration())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
realm.close();
callback.onSuccess();
}
@Override
public void onError(Throwable e) {
realm.close();
callback.onError(e.getLocalizedMessage());
}
});
}
@Override
public void onError(@NonNull Throwable exception) {
callback.onError(exception.getLocalizedMessage());
}
});
}
Я работаю несколько месяцев с синхронизацией Realm, и я все еще не понимаюкак правильно использовать этот API, мне было очень трудно инкапсулировать функции и вывести их из жизненного цикла действия / фрагмента.