插件讓你可以用多種方式修改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模塊
- 參與開發
- 補充閱讀材料