retryWhen
отвечает onError
для повторной подписки.
Приведенный ниже код повторяется ограниченное количество раз (3 раза и задерживает каждую попытку на 5 раз)
response.retryWhen(errors ->
errors
.zipWith(Observable.range(1, 3), (n, i) -> i)
.flatMap(retryCount -> Observable.timer((long) Math.pow(5, retryCount), TimeUnit.SECONDS))
);
Кроме того, убедитесь, что вы подписываетесь на subscribeOn.Schedulers.io()
, а observeOn(AndroidSchedulers.mainThread()
оправдывает выброс (действия) в главном потоке Android.