0
需要在我的可观测序列中第二次应用onSubscribe()
算子,请参见行:details.add(myApi.getDetails(h.getId()).subscribeOn(Schedulers.io()));
。如果未应用onSubscribe()
运算符,则会引发NetworkOnMainThreadException
。为什么在我的可观察序列中需要第二次onSubscribe()调用?
我的理解是,由于我已经在序列的早期应用了subscribeOn(Schedulers.io())
算子,所有未来的订阅应该发生在io
调度器上。我的理解有什么问题?这可能是一个改进的beta2问题,因为在下面的示例中,myApi
实例是通过Retrofit创建的?
myApi.getHeadlines()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Headlines, Observable<HeadlineDetail> {
@Override
public Observable<HeadlineDetail> call(Headlines headlines) {
List<Observable<HeadlineDetail>> details = new ArrayList<>();
for (Headline h : headlines) {
details.add(myApi.getDetails(h.getId()).subscribeOn(Schedulers.io()));
}
return Observable.merge(details);
}
})
.subscribe(...);
依赖关系:
- 改造贝塔2.0-β2
- 改造rxjava适配器2.0-β2
- rxjava v1.0.14
- rxandroind V1.0.1