Sto utilizzando RxJava con Retrofit 2.0 su Android per le richieste di rete.RxJava onCompleted e onTerminate sul thread principale
Quando sto creando il osservabile, aggiungo il seguente ad esso:
observable = observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
Se poi aggiungo una:
observable = observable.doOnTerminate(new Action0() {
@Override
public void call() {
Log.d("OBS", "[" + Thread.currentThread().getName() + "] onTerminate");
}
});
o simili per doOnError
e doOnCompleted
i callback sono eseguiti su il thread IO, mentre doOnNext
viene eseguito sul thread principale.
Tuttavia, quello che voglio veramente è che tutti i callback vadano al thread principale, ma l'esecuzione dovrebbe rimanere sul thread IO.
C'è una soluzione elegante a questo senza dover avvolgere manualmente le mie implementazioni con un blocco per pubblicare qualcosa sul thread principale?
autobus Usa evento e inviare al thread UI? –