【发布时间】:2020-08-24 20:49:44
【问题描述】:
我的代码是这样的:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
adapter.notifyDataSetChanged()
})
但我得到一个错误:只有创建视图层次结构的原始线程才能接触它的视图。 所以我把它改成:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
runOnUiThread(Runnable {
adapter.notifyDataSetChanged()
})
}
这是有道理的。所以我很困惑。
我原以为.observeOn(AndroidSchedulers.mainThread()) 表示订阅块中的代码在ui 线程上运行,但我是怎么得到这个错误的?
【问题讨论】:
-
堆栈跟踪是否指向
adapter.notifyDataSetChanged()? Mb 错误在链的另一部分?一般来说,是的,mainThread()表示 android 的 UI 线程。 -
我不知道如何判断stacktrace是否指向adapter.notifyDataSetChanged