我的代码是这样的:

.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/

10-09 04:33