RxJava

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>() {
// 當觀察者執行完畢後,會告知訂閱者並執行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就會馬上得到通知,並且進行相應的處理。

簡化

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

以下方法也能實現上面的功能

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);
}
});

以上基本操作介紹完畢!

文章目錄
  1. 1. RxJava & RxAndroid
    1. 1.0.1. RxJava的操作方式
    2. 1.0.2. 簡化
|