Ich habe folgendes Observable, die ein REST-Aufruf mit Retrofit ausführen werden jeweils 30 Sekunden:RxJava für Android: Expose Ausnahme und Retry (mit Verzögerung)
Subscription subscription = Observable.interval(0, REFRESH_INTERVAL, TimeUnit.SECONDS)
.concatMap(new Func1<Long, Observable<Response>>() {
@Override
public Observable<Response> call(Long time) {
return webservice.callRetrofitServiceWithRx(parameter);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new UpdateSuccessAction(), new UpdateErrorAction());
es passiert, dass kann (vor allem des REST-Aufruf) wird eine Ausnahme auslösen (zB keine Internetverbindung).
Was möchte ich erreichen möchte:
Die beobachtbare sollte die Ausnahme emittieren/aussetzen, so dass ich eine Fehlermeldung auf der Benutzeroberfläche angezeigt werden können, aber es sollte Artikel weiter emittieren (Wiederholung in 30 Sekunden) .
Aktuelle Forschung
Wenn ich die beobachtbaren geben das Exception kein spezielles Verhalten definieren und nicht mehr funktionieren (= keine Wiederholung in 30 Sekunden).
Wenn ich den Wiederholungsversuch versuche, wird die Ausnahme verschluckt und nicht ausgesetzt, so dass ich keinen Fehler in der ui anzeigen kann.
Wenn ich den onErrorReturn-Operator versuche, kann ich die Ausnahme behandeln, aber soweit ich weiß, ist keine Wiederholung möglich.
Umgehung
Meine aktuelle Problemumgehung ist auf diese beobachtbare wieder anmelden, aber ich würde gerne wissen, ob jemand eine elegantere Lösung.
Cool, vielen Dank! – Christopher