使用retry
方法:
subscription = ViewObservable.clicks(view, false)
.map(...)
.retry()
.subscribe(subscriberA)
但是,您將不會收到任何例外onError
。 要處理與重試(重新訂閱)邏輯使用異常retryWhen
:
subscription = ViewObservable.clicks(view, false)
.map(...)
.retryWhen(new Func1<Observable<? extends Notification<?>>, Observable<?>>() {
@Override
public Observable<?> call(Notification errorNotification) {
Throwable throwable = errorNotification.getThrowable();
if (errorNotification.isOnError() && handleError(throwable)) {
// return the same observable to resubscribe
return Observable.just(errorNotification);
}
// return unhandled error to handle it in onError and unsubscribe
return Observable.error(throwable);
}
private boolean handleError(Throwable throwable) {
// handle your errors
// return true if error handled to retry, false otherwise
return true;
}
}
.subscribe(subscriberA)
它的工作原理!這是我需要的答案。不過,我認爲'call'的簽名是錯誤的或過時的,因爲Func1是這樣的:https://github.com/ReactiveX/RxJava/blob/1.x/src/main/java/rx/functions/Func1的.java – user3714348 2014-10-07 07:17:37