- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在阅读了多篇博文和文档之后,我得出的结论是以下doOnSubscribe
将在工作线程上执行:
Observable.just(1)
.observeOn(Schedulers.io())
.doOnSubscribe(__ -> Log.d("Testing", "Testing")) // Shouldn't this be on worker thread?
.subscribe();
但是在调试之后,我看到 doOnSubscribe
是在主线程上执行的。我认为 doOnSubscribe
与其他运算符类似,因此在与 subscribeOn
和 observeOn
结合使用时具有类似的线程行为。
我错过了什么?如何将 doOnSubscribe
执行移至后台线程?
最佳答案
subscribeOn
和 observeOn
对 doOnSubscribe
没有影响,因为运算符之间的连接是在调用者线程上建立的,以支持立即取消。您必须以某种方式推迟对 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/
在阅读了多篇博文和文档之后,我得出的结论是以下doOnSubscribe 将在工作线程上执行: Observable.just(1) .observeOn(Schedulers
我有一个已注册 doOnSubscribe 和 doOnUnsubscribe 操作的 PublishSubject。如果完成订阅,则不会调用这两个操作。 private PublishSubject
val observable = Observable(...) .publish val subscription = observable.connect observable.doOns
以下代码打印 1, 2 Observable.just(1) .doOnSubscribe(d -> System.out.println(1)) .doOnSubscribe(d -
以下代码打印 1, 2 Observable.just(1) .doOnSubscribe(d -> System.out.println(1)) .doOnSubscribe(d -
为什么在 doOnSubscribe 内调用 subject.onNext(o) 没有任何效果,但是调用 subject.onComplete() 会导致流终止!? final PublishSubj
我如何创建一个单元测试,以在 rxjava 链的 doOnScubscribe 和 doFinally 上完成某种副作用? 例如: Observable.requestSomeValueFromWeb
我无法理解为什么以下代码不起作用。我做错了什么还是 RxJava2 实现中的某种错误? private Disposable savedDisposable; @Test public void te
我想实现一个简单的场景,其中当观察者订阅 PublishSubject 时将发生特定操作。 我是这样实现的: PublishSubjectpublishSubject=PublishSubject.c
我正在尝试实现 Reactor Subscriber Context ( http://projectreactor.io/docs/core/release/reference/#context )
在 RxJava 中,我倾向于使用 Observable.doOnSubscribe 来记录订阅 observable 的时间(以了解何时发生一些创建\获取数据的工作),并发现在调用某些繁重工作时捕获
我是一名优秀的程序员,十分优秀!