RxJava networkonmainthreadeexception尽管正确调用observeOn(io线程).&l



代码

getCompositeDisposable().add(Single.fromCallable(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
URL url = new URL(pageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode(); // <- crashes here
return code == 200;
}
})
.observeOn(getSchedulerProvider().io())
.subscribeOn(getSchedulerProvider().ui())
.subscribe((pageAvailable) -> {
boolean useCache = !pageAvailable;
getMvpView().loadPage(useCache, pageUrl);
}, Timber::e)
);

我不明白这里有什么问题。网络代码应该在io线程上运行,然后将结果返回给ui线程。这段代码在io线程上运行吗?我困惑。

尽管正确调用了observeOn(io thread)

不正确,你的代码应该是:
.subscribeOn(getSchedulerProvider().io()) //do work on the io thread
.observeOn(getSchedulerProvider().ui()) //apply changes to ui thread

永远记住subscribeOn是你工作的地方,顺序很重要

最新更新