RxJava的使用基本用法

一.RxJava是一個實現異步操作的庫

二.觀察者模式

    觀察者:監視着被觀察者的行爲,當被觀察者某個狀態改變的時候會通知觀察者觀察者會執行對應的操作;

    被觀察者:被監視的對象,當某個狀態改變的時候會通知觀察者

    訂閱(或註冊):將觀察者被觀察者建立聯繫。

常用的例子:點擊Button後觸發OnClickListener中的onClick()事件。在這個事件中他們的角色分別如下:

    觀察者:OnClickListener;

    被觀察者:Button;

    訂閱(或註冊):setOnClickListener()。

三.RxJava是觀察者模式

1.Observer或Subscribers即觀察者,它決定事件觸發的時候將有怎樣的行爲。

    (1) RxJava 觀察者的事件回調方法除了普通事件onNext()(相當於onClick()/onEvent())之外,還定義了兩個特殊的事件:onCompleted()和onError()。

    (2) onCompleted(): 事件隊列完結。RxJava 不僅把每個事件單獨處理,還會把它們看做一個隊列。RxJava 規定,當不會再有新的onNext()發出時,需要觸發onCompleted()方法作爲標誌。 

 

    (3) onError(): 事件隊列異常。在事件處理過程中出異常時,onError()會被觸發,同時隊列自動終止,不允許再有 事件發出。 

    (4) 在一個正確運行的事件序列中,onCompleted()和onError()有且只有一個,並且是事件序列中的最後一個。需要注意的是,onCompleted()和onError()二者也是互斥,即在隊列中調用了其中一個,就不應該再調用另一個。

2.Observable 即被觀察者,它決定什麼時候觸發事件以及觸發怎樣的事件。可以使用create()、just(T...)、fromArray(T[]) 來創建一個 Observable ,併爲它定義事件觸發規則。

3.訂閱,創建了Observable和Observer或Subscribers之後,再用subscribe()方法將它們聯結起來

四.使用

1.添加依賴

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.0'

2.創建Observer或Subscriber觀察者


 
Observer<String> observer = new Observer<String>() {
    @Override
    public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {

    }

    @Override
    public void onNext(@io.reactivex.annotations.NonNull String s) {
        Log.i(TAG, s);
    }

    @Override
    public void onError(@io.reactivex.annotations.NonNull Throwable e) {
        Log.i(TAG, "Error");
    }

    @Override
    public void onComplete() {
        Log.i(TAG, "Completed");
    }
};

 
Subscriber<String> subscriber = new Subscriber<String>() {
    @Override
    public void onSubscribe(Subscription s) {

    }

    @Override
    public void onNext(String s) {
        Log.d(tag, "Item: " + s);
    }

    @Override
    public void onError(Throwable t) {
        Log.d(tag, "Error!");
    }

    @Override
    public void onComplete() {
        Log.d(tag, "Completed!");
    }
};

3.使用Observable.create()創建被觀察者

Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
    @Override
    public void subscribe(@io.reactivex.annotations.NonNull ObservableEmitter<String> e) throws Exception {
        e.onNext("Hello");
        e.onNext("Wrold");
        e.onComplete();
    }
});

4.使用Observable.just()創建被觀察者

Observable observable = Observable.just("Hello","Wrold");

5.使用Observable.fromArray()創建被觀察者

String[] strings = {"Hello","Wrold"};
Observable observable = Observable.fromArray(strings);

6.訂閱

observable.subscribe(observer);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章