转换可以扔给Rxjava的代码

时间:2019-02-22 15:23:46

标签: android rx-java

我有以下代码

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

如何将其转换为Rx,如果出现异常,它将在一段时间内重试?

1 个答案:

答案 0 :(得分:2)

鉴于您的方法的返回类型为void,建议您使用Completable

您可以使用RxJava 2尝试此解决方案

from enum import Enum

class Letter(Enum):
   A = 1
   B = 2
   C = 3

print({i.name: i.value for i in Letter})
# prints {'A': 1, 'B': 2, 'C': 3}

然后订阅“完成”

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;
        }
    });

希望这会有所帮助。