- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 RxAndroid,并从我项目中的一个非常简单的示例开始。即获取可观察的用户个人资料图片 URL 响应。
下面是获取字符串 URL 值的代码,我使用 Picasso 加载图像 URL。当我使用 runonUiThread 加载图像时代码工作正常,但是当我不使用它时它会抛出错误;它说方法调用应该在主线程中。
doOnNext 和 doOnCompleted 是否总是在后台线程上运行?
picUrlSubscription = getUrlAsObservable()
.map(responseBodyResponse -> {
Log.d(TAG, "map ");
try {
if (responseBodyResponse.isSuccessful()) {
observableStr = responseBodyResponse.body().string();
return observableStr;
} else {
observableStr = "Bad_url";
return observableStr;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
})
.doOnNext(s -> {
Log.d(TAG, "next ");
try {
if (s != null && !s.equalsIgnoreCase("Bad_url")) {
observableStr = new JSONObject(s).getString("url");
} else
runOnUiThread(() -> profileCircle.setImageResource(R.drawable.profil));
} catch (JSONException e) {
e.printStackTrace();
runOnUiThread(() -> profileCircle.setImageResource(R.drawable.profil));
}
})
.doOnCompleted(() -> {
Log.d(TAG, "completed ");
runOnUiThread(() -> Picasso.with(this).load(observableStr).into(profileCircle));
})
.onErrorReturn(throwable -> {
Log.d(TAG, "error "+ throwable.getMessage());
observableStr = "bad_url";
runOnUiThread(() -> profileCircle.setImageResource(R.drawable.profil));
return observableStr;
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe();
最佳答案
不,doOnNext()
和 doOnCompleted()
在指定的线程上运行以通知其观察者。如果未指定线程,它们将在运行 observable 的同一线程上运行。
由于您指定了 subscribeOn(Schedulers.io())
,因此可观察对象将在 io
线程上运行。根据documentation ; subscribeOn()
运算符指定可观察对象将在哪个线程上运行,无论它出现在链中的哪个位置,这与 observeOn()
运算符不同:
ObserveOn
, on the other hand, affects the thread that theObservable
will use below where that operator appears.
因此,将您的observeOn()
调用放在您的doOnNext()
和doOnCompleted()
调用之前。
关于android - 在 onDoNext 和 doOnCompleted 方法中难以设置 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224336/
我正在学习 RxAndroid,并从我项目中的一个非常简单的示例开始。即获取可观察的用户个人资料图片 URL 响应。 下面是获取字符串 URL 值的代码,我使用 Picasso 加载图像 URL。当我
我是一名优秀的程序员,十分优秀!