Я новичок в RxAndroid и пробовал то же самое с базой данных Room. Но проблема в том, что при вставке данных в базу данных индикатор выполнения, который я показываю, блокируется и работает медленно. Я сослался на этот блог для проекта
public void insertBillPayments(final CallBackParams params,
BillPaymentsOffline... payments) {
Completable.fromAction(() -> db.daoAccess().insertBillPayments(payments))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onComplete() {
params.getCallback().onOrderAdded(params);
}
@Override
public void onError(Throwable e) {
params.getCallback().onDataNotAvailable(params);
}
});
}
Пожалуйста, поправьте меня, если я делаю что-то не так.
Вы были правы @Lino, проблема не в rx-коде. Перед вызовом вышеуказанного метода я выполнял еще один длительный процесс. Спасибо, что отвлекли меня на решение.
Этот код кажется прекрасным, но я бы порекомендовал вам переключить вызовы observeOn и subscribeOn для ясности, поскольку subscribeOn применяется к потоку, а observeOn применяется к передаваемым значениям и функциям, применяемым после него.
Код rx кажется правильным, а предоставленное действие (вставить запись в базу данных) не выполняется в потоке пользовательского интерфейса. Не могли бы вы опубликовать код, связанный с индикатором выполнения?