gpt4 book ai didi

android - Rxjava AndroidSchedulers.mainThread() 表示 UI 线程?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:08:53 25 4
gpt4 key购买 nike

我的代码是这样的:

.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()) 意味着订阅 block 中的代码在 ui 线程上运行,但我怎么会得到这个错误?

最佳答案

这里的代码有问题:

.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())

您不能像您注意到的那样在 UI 线程上订阅,您会得到一个异常:

Only the original thread that created a view hierarchy can touch its views.

你应该做的是在 I/O 线程上订阅并在 UI 线程上观察:

.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe ()

关于android - Rxjava AndroidSchedulers.mainThread() 表示 UI 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com