The SubscribeOn operator changes this behavior by specifying a different Scheduler on which the Observable should operate.
The ObserveOn operator specifies a different Scheduler that the Observable will use to send notifications to its observers.
The SubscribeOn operator designates which thread the Observable will begin operating on, no matter at what point in the chain of operators that operator is called.
ObserveOn, on the other hand, affects the thread that the Observable will use below where that operator appears.
ObserveOn影响其后操作使用的线程
SubscribeOn影响所有操作, 但ObserveOn优先
SubscribeOn在chain中的位置无所谓
多个SubscribeOn,第一个有效
测试代码:
参考http://reactivex.io/documentation/scheduler.html
http://www.grahamlea.com/2014/07/rxjava-threading-examples/
相关推荐
- **And/Then/When**:用于根据一组Observables的完成情况来触发另一个Observable的发射。 - **CombineLatest**:当任意一个输入Observable发射一个新值时,发射最新的值组合。 - **Join**:结合两个Observables的...
- **ObserveOn/SubscribeOn**:控制Observable在哪个调度器上运行。 - **Serialize**:确保同一时间只有一个观察者能调用onNext/onError/onCompleted。 - **TimeInterval/Timeout/Timestamp**:提供关于Observable...
常见的操作包括创建操作(如Empty、Never、Throw、Create、Defer、From、...And/Then/When、CombineLatest、Join、Merge、StartWith、Switch、Zip等)、错误处理辅助操作(如Catch、Retry、Delay、Do、ObserveOn、...
.observeOn(AndroidSchedulers.mainThread()) .subscribe( response -> listener.onSuccess(response), throwable -> { ApiException exception; if (throwable instanceof HttpException) { // 处理HTTP错误...
- **ObserveOn/SubscribeOn**:控制Observable何时何地执行。 - **Serialize**:确保一个Observable不会同时调用多个Observer。 - **TimeInterval/Timeout/Timestamp**:添加或检查时间戳。 - **Using**:使用有限...
- **SubscribeOn**:指定在哪个调度器上订阅Observable。 - **TimeInterval**:发射每个元素及其经过的时间间隔。 - **Timeout**:设置超时时间。 - **Timestamp**:发射每个元素及其时间戳。 - **Using**:使用资源...
8. 辅助操作:如Delay、Do、ObserveOn、Serialize、Subscribe、SubscribeOn和TimeInterval等,用于在序列的不同阶段进行操作。 9. 条件和布尔操作:如All、Contains、Amb等,用于基于条件逻辑操作Observable序列。 ...
错误处理操作包括Catch、Retry、Delay、Do、ObserveOn、Serialize、Subscribe、SubscribeOn、TimeInterval、Timeout、Timestamp、Using、To等,用于处理错误和异常。 条件和布尔操作包括All、Contains、Amb、...
- **ObserveOn/SubscribeOn**:指定数据项的处理线程或订阅线程。 - **Serialize**:序列化操作以确保线程安全。 - **TimeInterval/Timeout/Timestamp**:处理时间相关的数据。 - **Using**:管理资源生命周期。 - *...
### 反应式编程在Android中的应用:使用RxJava #### 一、反应式编程简介 **反应式编程**是一种编程范式,它基于数据流和可观察的对象来构建应用程序。这种模式允许开发者以声明性的方式处理并发、异步操作、事件...
4. **ObserveOn/SubscribeOn**:控制Observable数据流的线程切换。 5. **Serialize**:确保Observable在一个线程上顺序执行。 6. **TimeInterval/Timeout/Timestamp**:处理与时间相关的逻辑。 7. **Using**:管理...
- 辅助操作:如Catch、Retry、Delay、Do、ObserveOn、Serialize、Subscribe、SubscribeOn、TimeInterval、Timeout、Timestamp、Using、To等,这些操作符提供了额外的支持功能,比如错误处理、延时执行、线程切换等。...
Android library monitoring battery state of the device with RxJava and RxKotlin Contents Usage Examples Download Tests Code style Static code analysis JavaDoc Changelog Releasing References Credits ...
- **`subscribeOn()` 和 `observeOn()`:** `subscribeOn` 指定 Observable 创建和订阅发生的线程,`observeOn` 指定数据项在哪个线程上发射。 - **处理长时间任务:** 对于长时间运行的任务,如网络请求等,应该...
smartcrop-android smartcrop implementation in Java(Android) This library will analyze best crop position and ... .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1() { @Override
- **SubscribeOn**: 控制Observable在哪个调度器上发送事件。 - **TimeInterval**: 发送值及其持续时间。 - **Timeout**: 设置超时时间。 - **Timestamp**: 发送值及其发送时间。 - **Using**: 使用资源并在完成后...