NetworkOnMainThreadException despite RxJava2 subscribeOn(Sch



最近尝试学习RxJava,我想用RxJava2替换我在Android中的async任务。但是,当我运行它时,我在运行以下内容时出现"NetworkOnMainThreadException"异常:

private void requestLocationDetails() {
try {
compositeDisposable.add(Observable
.just(JsonRestCaller.readJsonFromUrl(buildUrl()))
.subscribeOn(Schedulers.io())
.subscribeWith(new DisposableObserver<JsonObject>() {
@Override
public void onNext(JsonObject jsonObject) {
try {
parseJson(jsonObject);
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
}
@Override
public void onError(Throwable e) {
Log.e(TAG, e.getMessage());
}
@Override
public void onComplete() {
}
}));
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}

据我了解,

.subscribeOn(Schedulers.io(((

导致我的方法在后台线程上运行,但 Android 另有说明。我在这里错过了什么吗?

首先,订阅只是让你订阅另一个线程上的可观察量。 它的 observeOn 在另一个线程上运行 onNext。 霍维尔弗:我不认为这是你的问题。 它只是在这个线程上运行。 just 函数会立即调用并由可观察对象发出,因此它会在您调用的线程上调用。

最新更新