【发布时间】:2017-10-23 12:28:37
【问题描述】:
我有以下要求:
- 多个观察者(片段)需要订阅一个数据源。
- Activity 将启动网络请求。一旦请求成功,每个观察者都会收到结果。
我尝试使用缓存/发布操作符来实现,但问题是初始请求何时返回错误。此时我希望重置流,并且对该方法的后续调用应该运行一个新的网络请求,而不是每次都返回错误。
这是我目前拥有的。
private Flowable<List<Data>> dataObservable;
private Flowable<List<Data>> getData(){
if(dataObservable == null){
dataObservable = apiService.getData()
.doOnError(throwable -> {
dataObservable = null;
})
.cache();
}
return dataObservable;
}
这可行,但代码感觉不对。一定有更好的方法。
【问题讨论】: