Android: подписка на Apollo с помощью RxJava2

Я использую подписку в Apollo с Rxjava2 следующим образом

Rx2Apollo.from(someApolloCall)
.observeOn(schedulerProvider.io())
.subscribeOn(schedulerProvider.ui())
.subscribe({

  // on success

}, {
  // on failure
})

Все работает хорошо, когда сеть в порядке, однако при потере подключения подписка не срабатывает, и она не подключается снова?

как я должен восстановить соединение в подобных сценариях, я пытался использовать операцию RXJAVA retryWhen{} но тщетно!

заранее спасибо.

1 ответ

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.

Другие вопросы по тегам