作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
不指定unsubscribeOn默认到什么线程,还是指定subscribeOn的线程?我们是否需要指定我们希望取消订阅发生的线程,即使它与 subscribeOn 中使用的线程相同?
或者底部的两个代码段是否对取消订阅执行相同的操作?
选项 1:
mSubscription.add(myAppProvider
.getSomeData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.unsubscribeOn(Schedulers.io())
.subscribe(data -> handleData(data),
throwable -> handleError(throwable)
));
选项 2:
mSubscription.add(myAppProvider
.getSomeData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> handleData(data),
throwable -> handleError(throwable)
));
我确实看过 Rx-Java docs但他们只解释了 subscribeOn 而没有解释 unSubscribeOn
最佳答案
这些 fragment 有不同的行为。
一般来说,取消订阅沿着运算符序列向上移动,并且可以由任何线程发起(只需从任何线程调用 subscriber.unsubscribe()
)。如果不存在 unsubscribeOn
运算符,取消订阅操作可能会在调用它的线程上完成操作。 unsubscribeOn
对其上游用于取消订阅的线程提供了更好的控制。
关于java - unSubscribeOn 调用了哪个线程?我们应该调用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40496565/
不指定unsubscribeOn默认到什么线程,还是指定subscribeOn的线程?我们是否需要指定我们希望取消订阅发生的线程,即使它与 subscribeOn 中使用的线程相同? 或者底部的两个代
我已经使用 RxJava 一段时间了。我使用 subscribeOn 和 observeOn 运算符来管理线程。我使用 subscribeOn 在 io 或 computation 线程中启动可观察发
我是一名优秀的程序员,十分优秀!