我的代码是这样的:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
adapter.notifyDataSetChanged()
})
但我得到一个错误:只有创建 View 层次结构的原始线程才能触摸其 View 。
所以我将其更改为:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe ({
runOnUiThread(Runnable {
adapter.notifyDataSetChanged()
})
}
这很有意义,所以我很困惑。
我曾经以为
.observeOn(AndroidSchedulers.mainThread())
意味着subscription块中的代码在ui线程上运行,但是我怎么得到这个错误? 最佳答案
问题出在这里的代码:
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
您不能像注意到的那样在UI线程上订阅,您将得到一个异常:
您应该做的是在I/O线程上订阅并在UI线程上进行观察:
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ()
关于android - Rxjava AndroidSchedulers.mainThread()表示UI线程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35027712/