Observable?—?Operator?—?Observer
Observable就像一個發聲的揚聲器。它會執行一些任務并發射(emit)一些值。
Operator就像一個翻譯機,將數據從一種形式翻譯或者修改為另一種形式。
Observer獲得這些值。
RxJava中的Observables類型
以下即為RxJava中不同的Observables類型
- Observable
- Flowable
- Single
- Maybe
- Completable
既然有不同的Observables類型,隨之也有不同的Observers類型。如下:
- Obeserver
- SingleObserver
- MaybeObserver
- CompletableObserver
現在就讓我們來看看他們之間的區別和如何選擇。
Observable <> Observer
此為最簡單的Observable,可以發射不止一個值。
舉個栗子:比方說你正在下載一個文件,報告當前的下載進度。此時將會發射不止一個值。
創建一個簡單的Observable
對應的Observer
Flowable <> Observer
Flowable 用于當Obserable發射很多的值時而Observer消費不過來的時候。
這種情況下,Observable需要基于某種策略忽略一些值,否則將會拋出異常。
Flowable Observable會通過某種策略來處理異常。
這個策略為BackPressureStrategy,異常為MissingBackPressureException
創建一個Flowable Observable
與創建一個普通的Observable類似,你可以使用Flowable.create()來創建一個Flowable。
對應Flowable Observable的Observer
與普通的Observer基本一樣。
Single <> SingleObserver
SIngle用于當Observable只需要發射一次值,比如網絡請求的響應的時候。
創建一個Single Observable
對應Single Observable的SingleObserver
Maybe <> MaybeObserver
Maybe 用于當Observable發射一個值或沒有值的時候。
創建一個 Maybe Observable
對應Maybe Observable的MaybeObserver
Completable <> CompletableObserver
Completable 用于Observable完成某個任務而不發射任何值得時候。
創建一個 Completable Observable
對應Completable Observable的CompletableObserver
好啦,現在你該知道如何根據你的場景來選擇哪一個Observable啦吧。
完整的Rxjava教程
RxJava是關于Reactive Extensions的java 虛擬機實現,它已成為Android開發的一項最重要的技能。
翻譯自Understanding Types Of Observables In RxJava