RxJava
是一個反應性擴展的Java VM實現:一個庫,用於使用可觀察序列組合異步和基於事件的程序Rxjava
因爲其基於事件流的鏈式調用、邏輯簡潔 & 使用簡單的特色,深受各大 Android開發者的歡迎。
Rxjava
原理 基於 一種擴展的觀察者模式被觀察者 (Observable) 經過 訂閱(Subscribe) 按順序發送事件 給觀察者 (Observer), 觀察者(Observer) 按順序接收事件 以及做出對應的響應動做java
implementation 'io.reactivex.rxjava2:rxjava:2.2.8' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// 1. 建立被觀察者 Observable 對象 Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { // 2. 在複寫的subscribe()裏定義須要發送的事件 @Override public void subscribe(ObservableEmitter<Integer> emitter) throws Exception { // 經過 ObservableEmitter類對象產生事件並通知觀察者 // ObservableEmitter類介紹 // a. 定義:事件發射器 // b. 做用:定義須要發送的事件 & 向觀察者發送事件 emitter.onNext(1); emitter.onNext(2); emitter.onNext(3); emitter.onComplete();//事件完成,能夠選擇繼續發送事件 } });
Observer<Integer> observer = new Observer<Integer>() { // 經過複寫對應方法來 響應 被觀察者 @Override public void onSubscribe(Disposable d) { Log.d(TAG, "開始鏈接"); } // 默認最早調用複寫的 onSubscribe() @Override public void onNext(Integer value) { Log.d(TAG, "處理事件"+ value ); } @Override public void onError(Throwable e) { Log.d(TAG, "處理事件"+ value ); } } @Override public void onComplete() { Log.d(TAG, "事件完成.不在接收任何事件" ); } } };
observable.subscribe(observer);
Observable.create(new ObservableOnSubscribe<Integer>() { // 1. 建立被觀察者 & 生產事件 @Override public void subscribe(ObservableEmitter<Integer> emitter) throws Exception { emitter.onNext(1); emitter.onNext(2); emitter.onNext(3); emitter.onComplete(); } }).subscribe(new Observer<Integer>() { // 2. 經過經過訂閱(subscribe)鏈接觀察者和被觀察者 // 3. 建立觀察者 & 定義響應事件的行爲 @Override public void onSubscribe(Disposable d) { Log.d(TAG, "開始採用subscribe鏈接"); } // 默認最早調用複寫的 onSubscribe() @Override public void onNext(Integer value) { Log.d(TAG, "處理事件"+ value ); } @Override public void onError(Throwable e) { Log.d(TAG, "處理Error事件,再也不接收事件"); } @Override public void onComplete() { Log.d(TAG, "處理Complete事件,再也不接收事件"); } }); }
觀察者 沒法繼續 接收 被觀察者的事件,但被觀察者仍是能夠繼續發送事件react
// 主要在觀察者 Observer中 實現 Observer<Integer> observer = new Observer<Integer>() { // 1. 定義Disposable類變量 private Disposable mDisposable; @Override public void onSubscribe(Disposable d) { Log.d(TAG, "開始採用subscribe鏈接"); // 2. 對Disposable類變量賦值 mDisposable = d; } @Override public void onNext(Integer value) { Log.d(TAG, "對Next事件"+ value +"做出響應" ); if (value == 2) { // 設置在接收到第二個事件後切斷觀察者和被觀察者的鏈接 mDisposable.dispose(); Log.d(TAG, "已經中段了鏈接:" + mDisposable.isDisposed()); } } @Override public void onError(Throwable e) { Log.d(TAG, "處理Error事件"); //沒法收到Error事件了 } @Override public void onComplete() { Log.d(TAG, "處理Complete事件");//沒法收到Complete事件了 } };
Rxjava
原理 基於 一種擴展的觀察者模式被觀察者 (Observable) 經過 訂閱(Subscribe) 按順序發送事件 給觀察者 (Observer), 觀察者(Observer) 按順序接收事件 以及做出對應的響應動做android
至此,Rxjava的基本介紹和使用就完成了,感謝閱讀segmentfault
Android Rxjava:這是一篇 清晰 & 易懂的Rxjava 入門教程異步
歡迎關注做者darryrzhong,更多幹貨等你來拿喲.ide
更多精彩文章請關注