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.