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读取字符串的示例。