RxJava & RxAndroid
RxJava的基本認知
RxJava 重要的核心概念為Observables和Subscribers
- Observables > 被觀察者
- Subscribers > 訂閱者
舉例來說,你可以訂閱某部落格(Observables),而當部落格發文時,訂閱者(Subscribers)就會收到通知。
而這個概念就是異步(Async)。
RxJava的操作方式
1 2 3 4 5 6 7 8 9 10 11 12
| Observable<String> observable = Observable.create( new Observable.OnSubscribe<String>(){ @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("Hello World"); subscriber.onCompleted(); } } );
|
建立被觀察者後,還需要有訂閱者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Subscriber<String> subscriber = new Subscriber<String>() { @Override public void onCompleted() { printlog("OnCompleted"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { printlog(s); } };
|
當被觀察者和訂閱者都建立之後,被觀察者需要設定發布對象(訊息要丟給哪一個訂閱者)
註冊訂閱者
observable.subscribe(subscriber);
如此一來,當observable進行資料處理完畢之後,subscriber就會馬上得到通知,並且進行相應的處理。
簡化
當你理解前面的概念後,可以更簡單的使用
以下方法也能實現上面的功能
1 2 3 4 5 6 7 8 9 10 11
| 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
上面是簡化後的被觀察者與訂閱者可讀性較高的寫法
以下將使用另一種方式呈現更簡化的寫法
1 2 3 4 5
| Observablel.just("Hello world").subscribe(new Action1<String>(){ public void call(String s){ System.out.println(s); } });
|
以上基本操作介紹完畢!