我有以下代码
private void tryToLauch() {
try {
launch();
} catch (MyException e) {
postError(e.getErrorMessage());
e.printStackTrace();
}
}
如何将其转换为Rx,如果出现异常,它将在一段时间内重试?
最佳答案
鉴于您的方法的返回类型为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;
}
});
然后订阅完成
myCompletable.subscribeOn(SubscribeScheduler)
.observeOn(ObserveScheduler)
.subscribe(this::onComplete, this::onError);
希望这可以帮助。
关于android - 转换可以扔给Rxjava的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54830219/