操作符入门
“创建”操作符
- 创建 被观察者( Observable) 对象 & 发送事件。
普通创建操作符1:create
- 作用:完整创建1个被观察者对象(Observable)
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
if (!emitter.isDisposed()) {
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
}
emitter.onComplete();
}
});
- 这里为了保证观察者在中断连接之后被观察者不再发送消息,我们这里使用了判断
普通创建操作符2:just
integerObservable = Observable.just(1,2,3,4,5);
普通创建操作符3:fromArray
Integer[] list = new Integer[]{1,2,3,4};
integerObservable = Observable.fromArray(list);
普通创建操作符4:fromIterable
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);list1.add(2);list1.add(3);list1.add(4);list1.add(5);
integerObservable = Observable.fromIterable(list1);
普通创建操作符5:fromIterable
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);list1.add(2);list1.add(3);list1.add(4);list1.add(5);
integerObservable = Observable.fromIterable(list1);
延迟创建操作符6:defer
- 直到有观察者(Observer )订阅时,才动态创建被观察者对象(Observable) & 发送事件
- 动态创建被观察者对象(Observable) & 获取最新的Observable对象数据
integerObservable = Observable.defer(new Callable<ObservableSource<? extends Integer>>() {
@Override
public ObservableSource<? extends Integer> call() throws Exception {
return Observable.just(Calendar.getInstance().get(Calendar.SECOND));
}
});
延迟创建操作符7:timer
- 快速创建1个被观察者对象(Observable)
- 发送事件的特点:延迟指定时间后,发送1个数值0(Long类型)
Observable<Long> longObservable = Observable.timer(2,TimeUnit.SECONDS)
延迟创建操作符8:interval
- 快速创建1个被观察者对象(Observable)
- 发送事件的特点:每隔指定时间 就发送 事件
longObservable = Observable.interval(4,3,TimeUnit.SECONDS)
- 这里的的一个参数表示初次延时时间,第二个参数表示间隔时间
- 其实这里可以发现,这个方法还有好几个重载方法,不过大同小异,有兴趣可以去探究
延迟创建操作符9:intervalRange
- 快速创建1个被观察者对象(Observable)
- 发送事件的特点:每隔指定时间 就发送 事件,可指定发送的数据的数量
longObservable = Observable.intervalRange(1,5,3,2,TimeUnit.SECONDS)
- 表示从1开始发送五个事件,第一次延时五秒发送,之后间隔2秒
延迟创建操作符10:range和rangeLong
longObservable = Observable.rangeLong(1,10);
- 从1开始发送10个事件,两个操作符相同,只不过类型不同
最后盗一张图