gpt4 book ai didi

android - doOnSubscribe 在主线程上被调用

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

在阅读了多篇博文和文档之后,我得出的结论是以下doOnSubscribe 将在工作线程上执行:

Observable.just(1)
.observeOn(Schedulers.io())
.doOnSubscribe(__ -> Log.d("Testing", "Testing")) // Shouldn't this be on worker thread?
.subscribe();

但是在调试之后,我看到 doOnSubscribe 是在主线程上执行的。我认为 doOnSubscribe 与其他运算符类似,因此在与 subscribeOnobserveOn 结合使用时具有类似的线程行为。

我错过了什么?如何将 doOnSubscribe 执行移至后台线程?

最佳答案

subscribeOnobserveOndoOnSubscribe 没有影响,因为运算符之间的连接是在调用者线程上建立的,以支持立即取消。您必须以某种方式推迟对 doOnSubscribe 的订阅,例如:

Observable.defer(() ->
Observable.just(1)
.doOnSubscribe(s -> Log.d("Testing", "Testing"))
)
.subscribeOn(Schedulers.io())
.subscribe();

Observable.just(1)
.subscribeOn(Schedulers.io())
.flatMap(v ->
Observable.just(1)
.doOnSubscribe(s -> Log.d("Testing", "Testing"))
)
.subscribe()

关于android - doOnSubscribe 在主线程上被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075574/

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