【发布时间】:2019-03-24 14:56:03
【问题描述】:
最近尝试学习 RxJava,我想在我的 viewmodel 类中用 RxJava2 替换我在 Android 中的异步任务。但是,当我运行它时,运行以下命令时出现“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 另有说明。我在这里遗漏了什么吗?
【问题讨论】:
标签: android rx-java2 subscription