一:什么是RxJava?
RxJava 也叫观察者模式。
RxJava 包括:
- Observerable: 被观察者,(数据发送者)
- Observer: 观察者 (也叫消费者、数据处理者)
- Subscribe: 订阅、事件
其实我们只需要理解哪个是数据发送者哪个是数据处理者,它们之间又有什么样的事件订阅关系即可。
二:RxJava的优点。
RxJava具有异步、响应式、灵活、简洁等特性。
三:RxJava的创建。
创建Observerable:
/**
* 创建Observerable 目的发送整数 让消费者打印出来
*/
private Observable<Integer> creatObserverable() {
return Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
e.onNext(1);
e.onNext(2);
e.onNext(3);
e.onNext(4);
e.onComplete();
}
});
}
创建Observer:
/**
* 创建Observer 处理数据
*/
private Observer<Integer> creatObserver() {
return new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("TAG","onSubscribe被执行");
}
@Override
public void onNext(Integer s) {
Log.d("TAG","onNext被执行:"+s);
}
@Override
public void onError(Throwable e) {
Log.d("TAG","onError被执行");
}
@Override
public void onComplete() {
Log.d("TAG","onComplete被执行");
}
};
}
订阅:
Observable<Integer> observerable = creatObserverable();
Observer<Integer> observer = creatObserver();
observerable.subscribe(observer);
运行结果:
03-03 14:27:32.726 8598-8598/com.pse.rxandroid D/TAG: onSubscribe被执行
03-03 14:27:32.727 8598-8598/com.pse.rxandroid D/TAG: onNext被执行:1
03-03 14:27:32.727 8598-8598/com.pse.rxandroid D/TAG: onNext被执行:2
03-03 14:27:32.727 8598-8598/com.pse.rxandroid D/TAG: onNext被执行:3
03-03 14:27:32.727 8598-8598/com.pse.rxandroid D/TAG: onNext被执行:4
03-03 14:27:32.727 8598-8598/com.pse.rxandroid D/TAG: onComplete被执行
subscribe()有多个重载方法,每个方法的侧重点不同:
public final Disposable subscribe() {}
public final Disposable subscribe(Consumer<? super T> onNext) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
public final void subscribe(Observer<? super T> observer) {}
上面便是最简单的RxJava的使用,但是RxJava还有很多复杂的操作符,比如flatMap()等我们第二章去了解。
网友评论