Tee*_*i.P 2 java rx-java retrofit rx-android
我想根据链请求更新 UI 2 次。
请求getUserByID()完成后首先更新 UI 。第二次getParentName()完成但是当我尝试在第一个请求时更新 UI 并获得线程问题的错误原因时。
我不知道如何解决这个问题。
示例代码
API.getUserByID("USER ID")
.flatMap(user-> {
// How to update UI here?
return API.getParentName(user.getId()))
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(parent-> {
// It's ok to update UI cause of on main thread.
parentTextView.setText(parent.getName())
});
Run Code Online (Sandbox Code Playgroud)
谢谢你。
您希望在可观察的发射上更新 UI,因此您需要为该可观察的指定观察者线程。
然后你应该使用doOnNext在观察者线程上调用的运算符:
API.getUserByID("USER ID")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(user_ -> {calls on observer thread})
.flatMap(user-> {
return API.getParentName(user.getId()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
})
.subscribe(parent-> {
// It's ok to update UI cause of on main thread.
parentTextView.setText(parent.getName())
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2521 次 |
| 最近记录: |