Ich benutze RxJava mit Retrofit 2.0 auf Android für Netzwerkanforderungen.RxJava onCompleted und onTerminate auf Haupt-Thread
Wenn ich die beobachtbaren bin erstellen, füge ich folgendes vor:
observable = observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
Dann, wenn ich hinzufügen:
observable = observable.doOnTerminate(new Action0() {
@Override
public void call() {
Log.d("OBS", "[" + Thread.currentThread().getName() + "] onTerminate");
}
});
oder ähnlich für doOnError
und doOnCompleted
die Rückrufe werden ausgeführt auf der IO-Thread, während doOnNext
auf dem Haupt-Thread ausgeführt wird.
Allerdings möchte ich wirklich, dass alle Callbacks zum Hauptthread gehen, aber die Ausführung sollte auf dem IO-Thread bleiben.
Gibt es eine elegante Lösung, ohne meine Implementierungen manuell mit einem Block zu umbrechen, um etwas an den Haupt-Thread zu posten?
Verwenden Ereignis Busse und Post an UI-Thread? –