RxJava
Rxjava 1.0
Github官方解释:一个在Java VM上使用可观察的序列来组成异步的、基于事件的程序库;总结三个字就是异步库。
简介
RxJava(异步)响应式编程,本质是观察者模式,以观察者observe和订阅者subscribe为基础的异步响应式开发,Rx是一种编程模式,目标提供一致的编程接口,帮助开发者更方便处理异步数据流。
优点
- 编程思路简洁明了
- 方便创建事件流和数据流
- 可以订阅任何可观察的数据流并执行操作
- 使用操作符组合变换数据流
使用
Observable 被观察者
1 | Observable observable = Observable.create(new Observable.OnSubscribe<String>(){ |
Subscriber 观察者
1 | Subscriber subscriber = new Subscriber<String>() { |
绑定
被观察者普通绑定观察者
1
this.observable.subscribe(subscriber);
被观察者绑定Action1接收事件
1
2
3
4
5
6this.observable.subscribe(new Action1<String>() {
public void call(String str) {
tv.setText(str);
}
});被观察者Observable使用Just发出事件,被观察者绑定Action1接收事件
1
2
3
4
5
6Observable.just("hello rxjava").subscribe(new Action1<String>() {
public void call(String str) {
tv.setText(str);
}
});Lambda表达式
1
Observable.just("hello rxjava").subscribe( s -> tv.setText(s));
操作符
操作符目的是为了解决对Observable对象的变换问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件
Map 操作符
map()操作符是用于变换Observable对象的,map操作符返回一个Observable对象,在一个Observable对象中多次使用map操作符,最终将数据传给Subscriber。
1 | Observable.just("hello rxjava") |
From 操作符
接收一个集合作为输入,然后每次输出一个元素给subscriber
1 | List<String> list = Arrays.asList("a","b","c"); |
FlatMap 操作符
Observable.flatMap()接收一个Observable的输出作为输入,同时输出另一个Observable
1 | List<String> list = Arrays.asList("a","b","c"); |
Filter 操作符
过滤,把不符合条件的过滤掉,只留下符合条件的操作符
Take 操作符
指定最多输出数量
doOnNext 操作符
每次输出一个元素前做一些其他的事情