我正在尝试重新执行一个已定义但失败的可观察对象。一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试具有订阅和行为的特定请求。那可能吗?
service.excecuteLoginService(url,
tokenModel,
RetrofitManager.apiKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(....)
最佳答案
一个选项是创建 Publisher,其发射由您的按钮控制。
final PublishSubject<Object> retrySubject = PublishSubject.create();
service.excecuteLoginService(url,
tokenModel,
RetrofitManager.apiKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> showButton())
.retryWhen(observable -> observable.zipWith(retrySubject, (o, o2) -> o))
.subscribeWith(result -> {}, error -> {});
您的按钮只会从 Subject
发出一个项目:
retrySubject.onNext(EMPTY);
关于android - 如何重试消耗的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47619115/