Конвертировать код, который можно бросить в Rxjava - PullRequest
0 голосов
/ 22 февраля 2019

У меня следующий код

private void tryToLauch() {
        try {
            launch();
        } catch (MyException e) {
            postError(e.getErrorMessage());
            e.printStackTrace();
        }
    }

Как я могу преобразовать его в Rx, который будет повторяться через некоторое время в случае исключения?

1 Ответ

0 голосов
/ 22 февраля 2019

Учитывая, что ваш метод имеет тип возврата void, я предлагаю вам использовать Completable .

Вы можете попробовать это решение, используя RxJava 2

Completable myCompletable = Completable.fromAction(new Action() {
        @Override
        public void run() throws Exception {
            launch();
        }
    }).retry(3 /*number of times to retry*/, new Predicate<Throwable>() {
        @Override
        public boolean test(Throwable throwable) throws Exception {
            return throwable instanceof MyException;
        }
    });

Затем подпишитесь на Completable

myCompletable.subscribeOn(SubscribeScheduler)
             .observeOn(ObserveScheduler)
             .subscribe(this::onComplete, this::onError);

Надеюсь, это поможет.

...