从零学习RxJava2.0-操作符入门

操作符入门

“创建”操作符

  • 创建 被观察者( 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个事件,两个操作符相同,只不过类型不同

最后盗一张图

猜你喜欢

转载自blog.csdn.net/asffghfgfghfg1556/article/details/81210804