插件让你可以用多种方式修改RxJava的默认行为:
* 修改默认的计算、IO和新线程调度器集合
* 为RxJava可能遇到的特殊错误注册一个错误处理器
* 注册一个函数记录一些常规RxJava活动的发生
# RxJavaSchedulersHook
这个插件让你可以使用你选择的调度器覆盖默认的计算、IO和新线程调度 (`Scheduler`),要做到这些,需要继承 `RxJavaSchedulersHook` 类并覆写这些方法:
* `Scheduler getComputationScheduler( )`
* `Scheduler getIOScheduler( )`
* `Scheduler getNewThreadScheduler( )`
* `Action0 onSchedule(action)`
然后是下面这些步骤:
1. 创建一个你实现的 `RxJavaSchedulersHook ` 子类的对象。
2. 使用 `RxJavaPlugins.getInstance( )` 获取全局的RxJavaPlugins对象。
3. 将你的默认调度器对象传递给 `RxJavaPlugins` 的 `registerSchedulersHook( )` 方法。
完成这些后,RxJava会开始使用你的方法返回的调度器,而不是内置的默认调度器。
# RxJavaErrorHandler
这个插件让你可以注册一个函数处理传递给 `Subscriber.onError(Throwable)` 的错误。要做到这一点,需要继承 `RxJavaErrorHandler` 类并覆写这个方法:
* `void handleError(Throwable e)`
然后是下面这些步骤:
1. 创建一个你实现的 `RxJavaErrorHandler ` 子类的对象。
2. 使用 `RxJavaPlugins.getInstance( )` 获取全局的RxJavaPlugins对象。
3. 将你的错误处理器对象传递给 `RxJavaPlugins` 的 `registerErrorHandler( )` 方法。
完成这些后,RxJava会开始使用你的错误处理器处理传递给 `Subscriber.onError(Throwable)` 的错误。
# RxJavaObservableExecutionHook
这个插件让你可以注册一个函数用于记录日志或者性能数据收集,RxJava在某些常规活动时会调用它。要做到这一点,需要继承 `RxJavaObservableExecutionHook` 类并覆写这些方法:
<table><thead>
<tr><th>方法</th><th>何时调用</th></tr>
</thead><tbody>
<tr><td><tt>onCreate( )</tt></td><td>在 <tt>Observable.create( )</tt>方法中</td></tr>
<tr><td><tt>onSubscribeStart( )</tt></td><td>在 <tt>Observable.subscribe( )</tt>之前立刻</td></tr>
<tr><td><tt>onSubscribeReturn( )</tt></td><td>在 <tt>Observable.subscribe( )</tt>之后立刻</td></tr>
<tr><td><tt>onSubscribeError( )</tt></td><td>在<tt>Observable.subscribe( )</tt>执行失败时</td></tr>
<tr><td><tt>onLift( )</tt></td><td>在<tt>Observable.lift( )</tt>方法中</td></tr>
</tbody>
</table>
然后是下面这些步骤:
1. 创建一个你实现的 `RxJavaObservableExecutionHook ` 子类的对象。
2. 使用 `RxJavaPlugins.getInstance( )` 获取全局的RxJavaPlugins对象。
3. 将你的Hook对象传递给 `RxJavaPlugins` 的 `registerObservableExecutionHook( )` 方法。
When you do this, RxJava will begin to call your functions when it encounters the specific conditions they were designed to take note of.
完成这些后,在满足某些特殊的条件时,RxJava会开始调用你的方法。
- ReactiveX
- Observables
- Single
- Subject
- Scheduler
- Operators
- 创建操作
- Create
- Defer
- Empty/Never/Throw
- From
- Interval
- Just
- Range
- Repeat
- Start
- Timer
- 变换操作
- Buffer
- FlatMap
- GroupBy
- Map
- Scan
- Window
- 过滤操作
- Debounce
- Distinct
- ElementAt
- Filter
- First
- IgnoreElements
- Last
- Sample
- Skip
- SkipLast
- Take
- TakeLast
- 结合操作
- And/Then/When
- CombineLatest
- Join
- Merge
- StartWith
- Switch
- Zip
- 错误处理
- Catch
- Retry
- 辅助操作
- Delay
- Do
- Materialize/Dematerialize
- ObserveOn
- Serialize
- Subscribe
- SubscribeOn
- TimeInterval
- Timeout
- Timestamp
- Using
- To
- 条件和布尔操作
- All/Contains/Amb
- DefaultIfEmpty
- SequenceEqual
- SkipUntil/SkipWhile
- TakeUntil/TakeWhile
- 算术和聚合操作
- Average/Concat/Reduce
- Max/Min/Count/Sum
- 异步操作
- 连接操作
- Connect
- Publish
- RefCount
- Replay
- 转换操作
- 阻塞操作
- 字符串操作
- 按字母顺序的操作符列表
- RxJava文档和教程
- RxJava入门指南
- RxJava使用示例
- 实现自定义操作符
- 自定义插件
- Backpressure
- 错误处理
- Android模块
- 参与开发
- 补充阅读材料