Używam RxJava z Retrofit 2.0 na Androida dla żądań sieciowych.RxJava onCompleted i onTerminate na głównym wątku
Kiedy tworzę obserwowalny, dodaję do niego następujące:
observable = observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
Następnie jeśli dodać:
observable = observable.doOnTerminate(new Action0() {
@Override
public void call() {
Log.d("OBS", "[" + Thread.currentThread().getName() + "] onTerminate");
}
});
lub podobny do doOnError
i doOnCompleted
wywołania zwrotne są wykonywane na wątek IO, podczas gdy doOnNext
jest wykonywany na głównym wątku.
Jednak tak naprawdę chcę, aby wszystkie wywołania zwrotne trafiły do głównego wątku, ale wykonanie powinno pozostać w wątku IO.
Czy jest to eleganckie rozwiązanie bez konieczności ręcznego owijania implementacji blokiem, aby opublikować coś w głównym wątku?
autobusy Wykorzystanie zdarzeń i pisać w wątku UI? –