Android: подписка на Apollo с помощью RxJava2 - PullRequest
0 голосов
/ 19 декабря 2018

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

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

  // on success

}, {
  // on failure
})

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

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

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

1 Ответ

0 голосов
/ 19 декабря 2018

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.

...