RxJava & RxAndroid

RxJava的基本認知

RxJava 重要的核心概念為Observables和Subscribers

  • Observables > 被觀察者
  • Subscribers > 訂閱者

舉例來說,你可以訂閱某部落格(Observables),而當部落格發文時,訂閱者(Subscribers)就會收到通知。

而這個概念就是異步(Async)。

RxJava的操作方式
// 建立被觀察者
Observable<String> observable = Observable.create(
        new Observable.OnSubscribe<String>(){

            @Override
            public void call(Subscriber<? super String> subscriber) {

                // 執行
                subscriber.onNext("Hello World");
                subscriber.onCompleted();
            }
        }
);

建立被觀察者後,還需要有訂閱者

    // 建立訂閱者
    Subscriber<String> subscriber = new Subscriber<String>() {

        // 當觀察者執行完畢後,會告知訂閱者並執行onCompleted
        @Override
        public void onCompleted() {
            printlog("OnCompleted");
        }

        @Override
        public void onError(Throwable e) {

        }

        // 觀察者發布onNext時,訂閱者接收後的處理
        @Override
        public void onNext(String s) {
            printlog(s);
        }
    };

當被觀察者和訂閱者都建立之後,被觀察者需要設定發布對象(訊息要丟給哪一個訂閱者)

 // 註冊訂閱者
 observable.subscribe(subscriber);

如此一來,當observable進行資料處理完畢之後,subscriber就會馬上得到通知,並且進行相應的處理。

簡化

當你理解前面的概念後,可以更簡單的使用

以下方法也能實現上面的功能
    // 建立被觀察者
     Observable<String> observable = Observable.just("Hello World");

     // 建立訂閱者
     Action1<String> action1 = new Action1<String>() {
        @Override
        public void call(String s) {
            printlog(s);
        }
    };

    observable.subscribe(action1);

其中Action也可以定義 onNext、onError、onCompleted

上面是簡化後的被觀察者與訂閱者可讀性較高的寫法 以下將使用另一種方式呈現更簡化的寫法

    Observablel.just("Hello world").subscribe(new Action1<String>(){
      public void call(String s){
        System.out.println(s);
      }
    });

以上基本操作介紹完畢!

results matching ""

    No results matching ""