我正在尝试重新执行失败的已定义observable。同时使用Retrofit2和RxJava2我想在单击按钮时使用其订阅和行为重试特定请求。那可能吗?
service.excecuteLoginService(url,
tokenModel,
RetrofitManager.apiKey)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(....)
答案 0 :(得分:0)
一个选项是创建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);