RxJava 基本實現
1) 創建 Observer
Observer 即觀察者,它決定事件觸發的時候將有怎樣的行爲。 RxJava 中的 Observer 接口的實現方式:
Observer<String> observer = new Observer<String>() {
@Override
public void onNext(String s) {
Log.d(tag, "Item: " + s);
}
@Override
public void onCompleted() {
Log.d(tag, "Completed!");
}
@Override
public void onError(Throwable e) {
Log.d(tag, "Error!");
}
};
除了 Observer 接口之外,RxJava 還內置了一個實現了 Observer 的抽象類:Subscriber。 Subscriber 對 Observer 接口進行了一些擴展,但他們的基本使用方式是完全一樣的:
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
Log.d(tag, "Item: " + s);
}
@Override
public void onCompleted() {
Log.d(tag, "Completed!");
}
@Override
public void onError(Throwable e) {
Log.d(tag, "Error!");
}
};
不僅基本使用方式一樣,實質上,在 RxJava 的 subscribe 過程中,Observer 也總是會先被轉換成一個 Subscriber 再使用。所以如果你只想使用基本功能,選擇 Observer 和 Subscriber 是完全一樣的。
2) 創建 Observable
Observable 即被觀察者,它決定什麼時候觸發事件以及觸發怎樣的事件。 RxJava 使用 create() 方法來創建一個 Observable ,併爲它定義事件觸發規則:
Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("Hello");
subscriber.onNext("Hi");
subscriber.onNext("Aloha");
subscriber.onCompleted();
}
});
那麼怎麼才能夠應用呢,其實很簡單,只需要這樣
//被觀察者訂閱觀察者(按自己的理解)
observable.subscribe(observer);
//或者
observable.subscribe(subscriber); //因爲subscriber是observe的抽象類,所以能夠採用這種寫法
3)採用 just(),或者from()的方式創建
//採用just方式
Observable.just("Hello","World")
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.e("s",s);
}
});
//採用from方式
List<String> list = new ArrayList<>();
list.add("hello");
list.add("world");
Observable.from(list)
.subscribe(new Action1<String>() {
@Override
public void call(String s) {
Log.e("s",s);
}
});
這兩種方式得到的結果是一樣的。這樣我們可以實現一個簡單的使用RxJava讀取字符串的示例。