大家好,我是RxJava的新手,并试图围绕一些概念。我需要从api中获取一个值,然后对依赖于该值的api再运行2个查询。
我尝试以这种方式实现它,但它给了我一个NetworkOnMainThreadException。有没有办法解决问题?流,还是我的理解有缺陷?任何帮助表示赞赏。
ConnectableObservable<Value> getSomeValueStream =
_api
.someHttpAsyncTask()
.map(parseJsonResponse)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.publish();
getSomeValueStream
.flatMap(HttpAsyncTask2Stream)
.subscribe();
getSomeValueStream
.flatMap(HttpAsyncTask3Stream)
.subscribe();
getSomeValueStream.connect();
答案 0 :(得分:0)
我的猜测是你想要一个io-scheduler来做网络调用,而不是主线程。所以这个:
.observeOn(AndroidSchedulers.mainThread())
应该是这样的:
.observeOn(AndroidSchedulers.io())
请记住,observeOn
导致可观察的排放在不同的调度程序上完成,这导致网络调用在主线程上执行(因此错误)。
如果android中没有io-scheduler,请使用合适的。{/ p>