android - 如何重试消耗的 Observable?

标签 android observable retrofit2 rx-java2 android-networking

我正在尝试重新执行一个已定义但失败的可观察对象。一起使用 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/

相关文章:

javascript - Angular-redux 设计 - 数组选择器

android - 避免改造 POJO 冗余

java - 使用 Retrofit2 在 Recycleview 中得到空响应?

java - 解析特定的文本文件java

Android 将事件添加到 CustomPreference 元素 (TextView)

android - 您如何将 EditText 设置为仅接受 Android 中的数值?

arrays - 数组到数组的 Observable(Rxjs)

android - 如何随机启动Android Activity?

javascript - 如何从回调中创建 Observable

android - Retrofit 多部分请求是否可以暂停和恢复?