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

快捷操作符

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者: maplejaw本篇只解析标准包中的操作符。对于扩展包,由于使用率较低,如有需求,请读者自行查阅文档。 创...
    maplejaw_阅读 46,272评论 8 93
  • 作者寄语 很久之前就想写一个专题,专写Android开发框架,专题的名字叫 XXX 从入门到放弃 ,沉淀了这么久,...
    戴定康阅读 7,762评论 13 85
  • 本篇文章介主要绍RxJava中操作符是以函数作为基本单位,与响应式编程作为结合使用的,对什么是操作、操作符都有哪些...
    嘎啦果安卓兽阅读 3,016评论 0 10
  • 注:只包含标准包中的操作符,用于个人学习及备忘参考博客:http://blog.csdn.net/maplejaw...
    小白要超神阅读 2,392评论 2 8
  • RxJava正在Android开发者中变的越来越流行。唯一的问题就是上手不容易,尤其是大部分人之前都是使用命令式编...
    刘启敏阅读 2,036评论 1 7

友情链接更多精彩内容