初识RxJava(一)创建类 操作符

  1. 云栖社区>
  2. 博客列表>
  3. 正文

初识RxJava(一)创建类 操作符

吾乃韩小呆 2018-11-09 22:49:54 浏览224 评论0

摘要: 前言: 众所周知RxJava是个好东西,至于好在哪里大家相信大家都看过了百度出来的第一篇文章就是 抛物线的这篇文章 《给 Android 开发者的 RxJava 详解》,这篇文章很好,但是像我一样的读得懵懵懂懂得人应该也是大有人在吧,而且是关于RxJava 1.0版本的,现在已经是Rxjava 2.0 时代了,好多东西已经发生了变化,那么我推荐各位看这位大佬 Season_zlc 的文章,写的贼棒,笔者是折服了 ,专题链接:RxJava2.x 。

前言:

众所周知RxJava是个好东西,至于好在哪里大家相信大家都看过了百度出来的第一篇文章就是 抛物线的这篇文章 《给 Android 开发者的 RxJava 详解》,这篇文章很好,但是像我一样的读得懵懵懂懂得人应该也是大有人在吧,而且是关于RxJava 1.0版本的,现在已经是Rxjava 2.0 时代了,好多东西已经发生了变化,那么我推荐各位看这位大佬 Season_zlc 的文章,写的贼棒,笔者是折服了 ,专题链接:RxJava2.x 。但是笔者认为读了这些还不够,RxJava 还有大量的操作符需要我们进行探索,不太监了,笔者为大家带来关于 RxJava 的各种操作符的相关笔记,共勉,共勉。

正题:

开篇一张图,剩下的全靠编。。。而且图还是盗图 。╮(╯﹏╰)╭
RxJava 操作符汇总

笔者的笔记是基于 RxJava 2.0 入手,不研究源码,因为笔者水平不够,会用就好了嘛,嘿嘿嘿!首先,先引入依赖 : RxJava

implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.3'

1、create 基本创建符

1)、基础写法
  //创建被观察者
        Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {

                logDUtils("observable  onNext:1");
                emitter.onNext(1);
                logDUtils("observable  onNext:2");
                emitter.onNext(2);
                logDUtils("observable  onNext:3");
                emitter.onNext(3);
                logDUtils("observable  onNext:4");
                emitter.onNext(4);

                logDUtils("observable  onComplete");
                emitter.onComplete();

                logDUtils("observable  onNext:5");
                emitter.onNext(5);
            }
        });
        
        //创建观察者
        Observer<Integer> observer = new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                logDUtils("onSubscribe:" + d.toString());
            }

            @Override
            public void onNext(Integer integer) {
                logDUtils("onNext:" + integer);
            }

            @Override
            public void onError(Throwable e) {
                logDUtils("onError:" + e.getMessage());
            }

            @Override
            public void onComplete() {
                logDUtils("onComplete:");
            }
        };
        //进行订阅
        observable.subscribe(observer);
2)、链式调用
    private void createMethod() {
        Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                //创建被观察对象
                emitter.onNext(1);
                //结束发送
                emitter.onComplete();
            }
        }).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Integer integer) {
            //接收被观察对象发送的 对象
            }

            @Override
            public void onError(Throwable e) {
            //接收 onError 事件 ,做出相应反应
            }

            @Override
            public void onComplete() {
             //事件处理完成,做出相应处理
            }
        });
    }

使用效果

3)、作用

完整创建1个被观察者对象(Observable)
属于 RxJava 最基本的创建符

2、just 快速创建符

1)、作用

创建1个被观察者对象
直接发送 传入的事件(逐一发送)

最多只能发送 10 个事件

2)、代码

  private void justMethod() {
        Observable.just(1,2,3,4,5).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                logDUtils("onSubscribe:" );
            }

            @Override
            public void onNext(Integer integer) {
                logDUtils("onNext:" + integer);
            }

            @Override
            public void onError(Throwable e) {
                logDUtils("onError:" + e.getMessage());
            }

            @Override
            public void onComplete() {
                logDUtils("onComplete:");
            }
        });

    }

效果

3、fromeArray 发送数组内数据

1)、作用

创建1个被观察者对象
直接发送 传入的数组数据(逐一发送) 相当于遍历

2)、代码
 /**
     * fromArray 操作符
     */
    private void arrayMethod() {

        String str[] = {"AAA", "BBB", "CCC", "DDD"};

        Observable.fromArray(str).subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                logDUtils("onSubscribe:");
            }

            @Override
            public void onNext(String s) {
                logDUtils("onNext:" + s);
            }

            @Override
            public void onError(Throwable e) {
                logDUtils("onError:" + e.getMessage());
            }

            @Override
            public void onComplete() {
                logDUtils("onComplete:");
            }
        });
    }
3)、效果

效果

4、fromIterable 操作符

1)、作用

创建1个被观察者对象
直接发送 传入的集合 List 内数据(相当于遍历)

2)、代码
 /**
     *fromIterable 操作符
     */
    private void listMethod() {
        ArrayList<String> list = new ArrayList<>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        list.add("555");
        Observable.fromIterable(list).subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                logDUtils("onSubscribe:");
            }

            @Override
            public void onNext(String s) {
                logDUtils("onNext:" + s);
            }

            @Override
            public void onError(Throwable e) {
                logDUtils("onError:" + e.getMessage());
            }

            @Override
            public void onComplete() {
                logDUtils("onComplete:");
            }
        });
    }
3)、效果

效果

【云栖快讯】你想见的Java技术专家都在这了,向大佬提问,有问题必答  详情请点击

网友评论

吾乃韩小呆
文章60篇 | 关注46
关注
操作审计(ActionTrail)会记录您的云账户资源操作,提供操作记录查询,并可以将记录文... 查看详情
大数据商业智能套件提供海量数据实时在线分析,拖拽式操作、丰富的可视化效果,帮助您轻松自如地完... 查看详情
API 网关(API Gateway),提供高性能、高可用的 API 托管服务,帮助用户对外... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里云总监课正式启航

阿里云总监课正式启航