美文网首页Android RxJava 2.X 入门例子详解
Android RxJava 2.x入门例子详解(二)

Android RxJava 2.x入门例子详解(二)

作者: IM魂影 | 来源:发表于2017-09-13 20:35 被阅读8次

    快捷操作符

    Observable的创建方式:

    just()
    创建一个Observable,并自动调用onNext()发射数据,可发射一个或一组对象。

    Observable.just(1,2,3).subscribe(new Consumer<Integer>() {
          @Override
          public void accept(Integer integer) throws Exception {
                    Log.d(TAG,"接收到:"+integer);
                }
          });
    

    defer()
    当观察者订阅时,才创建Observable,并且对每个观察者创建都是一个新的Observable。

    Observable.defer(new Callable<ObservableSource<?>>() {
                @Override
                public ObservableSource<?> call() throws Exception {
                    return Observable.just("hello");
                }
            }).subscribe(new Consumer<Object>() {
    
                @Override
                public void accept(Object o) throws Exception {
                    Log.d(TAG,""+o.toString());
                }
            });
    

    fromIterable()
    创建一个Observable遍历集合,发送每个item。相当于多次回调onNext()方法,每次传入一个item。

    List<String> list = new ArrayList<String>();
            for(int i =0;i<10;i++){
                list.add("Hello"+i);
            }
            Observable<String> observable = Observable.fromIterable(list);
    
            Consumer<String> consumer = new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    Log.d(TAG,"接收到:"+s);
                }
            };
    
            observable.subscribe(consumer);
    

    interval( )
    创建一个Observable,在给定的时间间隔内发出一系列整数,可用作定时器。

    //按照固定2秒一次调用onNext()方法
    Observable.interval(2, TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
          @Override
          public void accept(Long aLong) throws Exception {
                    Log.d(TAG,""+aLong);
                }
          });
    

    range( )
    创建一个Observable,发射指定范围的整数序列。

    //发射1到20的数,即调用20次nNext()方法,依次传入1-20数字
    Observable.range(1,20).subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Exception {
                    Log.d(TAG,""+integer);
                }
            });
    

    timer( )
    创建一个Observable,延迟指定时间后发射一个指定的值

    //2秒后发射
    Observable.timer(2, TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
                @Override
                public void accept(Long aLong) throws Exception {
                    Log.d(TAG,""+aLong);
                }
            });
    

    repeat( )
    创建一个Observable,重复调用onNext()事件。

    //循环发射123
    Observable.just(123).repeat().subscribe(new Consumer<Integer>() {
                @Override
                public void accept(Integer integer) throws Exception {
                    Log.d(TAG,""+integer);
                }
            });
    

    更多操作符可参考官方文档:
    http://reactivex.io/documentation/operators.html

    相关文章

      网友评论

        本文标题:Android RxJava 2.x入门例子详解(二)

        本文链接:https://www.haomeiwen.com/subject/lhblsxtx.html