我的代码是这样的:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
adapter.notifyDataSetChanged()
})
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:只有创建视图层次结构的原始线程才能触及其视图. 所以我把它改成:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
runOnUiThread(Runnable {
adapter.notifyDataSetChanged()
})
}
Run Code Online (Sandbox Code Playgroud)
这很有道理.所以我很困惑.我曾经想过.observeOn(AndroidSchedulers.mainThread())订阅块中的代码在ui线程上运行,但我是如何得到这个错误的?
问题出在这里的代码:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
Run Code Online (Sandbox Code Playgroud)
你注意到你不能在UI线程上订阅,你会得到一个例外:
只有创建视图层次结构的原始线程才能触及其视图.
你应该做的是订阅I/O线程并观察UI线程:
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |