Rxjava的Observable创建操作符介绍


本文以简单的例子来讲解Observable的创建操作符符:Create,From,Interval,Just,Range,Repeat.


  • Create,通过调用观察者的方法从头创建一个Observable;
Observable.create(new Observable.OnSubscribe<Integer>() {
         @Override
         public void call(Subscriber<? super Integer> subscriber){                   
                for (int i=0;i<3;i++){
                    subscriber.onNext(i);
                    }
                   }
                })
         .subscribe(new Subscriber<Integer>() {
                  @Override
                  public void onCompleted() {
                  //执行完所有任务后回调
                  }
                  @Override
                  public void onError(Throwable e) {
                    //发生错误时回调
                   }
                  @Override
                  public void onNext(Integer integer) {
                       Log.i("ysc", "create:"+integer.intValue() );
                    }
                });

结果如下:
这里写图片描述


  • Just,创建一个发射指定值的Observable,下面例子就是指定发送(1,2,3)
Observable.just(1,2,3)
          .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        Log.i("ysc", "just:"+s);
                    }
             });

  • From,将其它的对象或数据结构转换为Observable,将相同类型的数据放到Future、Iterable或者数组里。
Integer[] items = {  1, 2, 3 };
Observable.from(items)
          .subscribe(new Action1<Integer>() {
                 @Override
                 public void call(Integer integer) {
                        Log.i("ysc", "from:" + integer.intValue());
                   }
           });

  • Interval,创建一个按固定时间间隔发射整数序列的Observable,就相当于我们定时器,例如以下代码实现定时器功能要比Timer来简洁得多。
Observable.interval(5000, TimeUnit.MILLISECONDS)
          .subscribe(new Action1<Long>() {
                @Override
                public void call(Long aLong) {
                   Log.i("ysc", "interval:" + aLong.intValue())
                 }
           });

  • Range,创建发射指定范围的整数序列的Observable,在实际开发中可以拿来替代for循环,发射一个范围内的有序整数序列,第一个参数是起始值必须不小于0,第二个参数为终值,左闭右开
Observable.range(0, 10)
          .subscribe(new Action1<Integer>() {
                 @Override
                 public void call(Integer integer) {
                        Log.i("ysc", "range:" + integer.intValue());
                    }
                });

结果如下:
这里写图片描述


  • Repeat,创建一个N次重复发射特定数据的Observable,简单来说就是创建一个指定执行多少次的Observable;下面表示指定执行2次。
Observable.range(0, 2)
          .repeat(2)
          .subscribe(new Action1<Integer>() {
               @Override
               public void call(Integer integer) {
                        Log.i("ysc", "repeat:" +integer.intValue());
                   }
          });

本文只是简单地讲如何创建各种看起来功能各异的Observable,但其实他们都是一样的,譬如Just和From,Just的也调用了From的方法的,点进去看Just的源码

如下

这里先不赘述原理,也先不深究源码,先知其然,先把基本用法弄清楚,再知之其所以然。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值