如何重试耗尽的Observable?

时间:2017-12-03 13:57:28

标签: android observable retrofit2 rx-java2 android-networking

我正在尝试重新执行失败的已定义observable。同时使用Retrofit2和RxJava2我想在单击按钮时使用其订阅和行为重试特定请求。那可能吗?

service.excecuteLoginService(url,
            tokenModel,
            RetrofitManager.apiKey)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(....)

1 个答案:

答案 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);