定义
RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM
翻译:RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库
作用
实现异步操作 类似于Android中的 AsyncTask 、Handler作用
特点
随着逻辑复杂性提高依然能保持简洁
逻辑简洁
实现优雅
使用简单
原理
角色 |
作用 |
类比 |
被观察者(Observable) |
产生事件 |
顾客 |
观察者(Observer) |
接收事件,并给出响应动作 |
厨房 |
订阅(Subscribe) |
连接 被观察者 & 观察者 |
服务员 |
事件(Event) |
被观察者 & 观察者 沟通的载体 |
菜式 |
RxJava原理可总结为:被观察者通过订阅(Subscribe)按顺序发送事件给观察者,观察者按顺序接收事件并作出对应的响应。
基本使用
步骤1:创建被观察者 (Observable
)& 生产事件
Observable<String> stringObservable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
e.onNext("米饭");
e.onNext("鲁菜");
e.onNext("东北水饺");
e.onNext("烤肉");
e.onComplete();
}
})
<--扩展:RxJava 提供了其他方法用于 创建被观察者对象Observable --> //
1:just(T...):直接将传入的参数依次发送出来 Observable observable = Observable.just("A", "B", "C");
2:from(T[]) / from(Iterable<? extends T>) : 将传入的数组 / Iterable 拆分成具体对象后,依次发送出来 String[] words = {"A", "B", "C"}; Observable observable = Observable.from(words);
步骤2:创建观察者 (Observer
)并 定义响应事件的行为
Observer<Object> observer = new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object s) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
};
步骤3:通过订阅(Subscribe
)连接观察者和被观察者
stringObservable.subscribe(observer);
gradle加依赖:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.7'