disposable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("");
emitter.onError(new RuntimeException("always fails"));
}
}).retryWhen(new Function<Observable<Throwable>, ObservableSource<?>>() {
@Override
public ObservableSource<?> apply(Observable<Throwable> throwableObservable) throws Exception {
return throwableObservable.flatMap(new Function<Throwable, Observable<Long>>() {
@Override
public Observable<Long> apply(Throwable throwable) throws Exception {
return Observable.timer(getInterval(), TimeUnit.SECONDS);
}
});
}
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() {
@Override
public void accept(Object o) throws Exception {
Log.d("Xxxxxxxxxxxxxxxxx");
}
});
getInterval()返回本次轮询间隔即可