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