You can go with retryWhen, which parameter - Func1 - returns an Observable that indicates when the retry will occur. For instance:
PublishSubject<Object> retryButtonClicked = PublishSubject.create(); Observable .error(new RuntimeException()) .doOnError(throwable -> System.out.println("error")) .retryWhen(observable -> observable.zipWith(retryButtonClicked, (o, o2) -> o)) .subscribe(); retryButtonClicked.onNext(new Object());
every time retryButtonClicked allows an event, the Observable will be re-checked
Here's also an example - https://gist.github.com/benjchristensen/3363d420607f03307dd0
source share