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

简介:

前言:

众所周知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
【Java基础】- RMI原理和使用详解
【Java基础】- RMI原理和使用详解
634 0
|
10月前
|
存储 Go
Go 语言入门指南:切片
Golang中的切片(Slice)是基于数组的动态序列,支持变长操作。它由指针、长度和容量三部分组成,底层引用一个连续的数组片段。切片提供灵活的增减元素功能,语法形式为`[]T`,其中T为元素类型。相比固定长度的数组,切片更常用,允许动态调整大小,并且多个切片可以共享同一底层数组。通过内置的`make`函数可创建指定长度和容量的切片。需要注意的是,切片不能直接比较,只能与`nil`比较,且空切片的长度为0。
277 3
Go 语言入门指南:切片
|
10月前
|
存储 计算机视觉 Python
|
3月前
|
存储 测试技术 C#
DDD领域驱动设计:实践中的聚合
领域驱动设计(DDD)中的聚合根是管理复杂业务逻辑和数据一致性的核心概念。本文通过任务管理系统示例,讲解如何设计聚合根、处理多对多关系、强制业务规则及优化性能,帮助开发者构建结构清晰、可维护的领域模型。
459 12
DDD领域驱动设计:实践中的聚合
|
3月前
|
JSON 运维 监控
拼多多:通过物流预警API提前识别异常订单,主动联系用户
拼多多集成物流预警API,实时监控订单状态,通过规则引擎识别延迟、丢失等异常,自动触发用户通知,提升满意度、降低售后压力。技术结合API调用、异常检测与自动化响应,实现主动式物流管理,助力构建高效、可信的电商体验。(238字)
360 0
|
6月前
|
监控 数据可视化 数据处理
微信养号脚本,全自动插件,AUTOJS开发版
这是一套自动化微信养号工具,包含主脚本`wechat_auto.js`与配置文件`config.json`。主脚本实现自动浏览朋友圈、随机阅读订阅号文章及搜索指定公众号三大功能,支持自定义滚动次数、阅读时长等参数。代码通过随机化操作间隔模拟真实用户行为,具备完善的错误处理和日志记录功能。配套UI模块提供可视化操作界面,可实时监控任务状态与运行日志,便于调整参数设置。控制器部分扩展了批量数据处理能力,如学生信息的增删改查操作,适用于多场景应用。下载地址:https://www.pan38.com/share.php?code=n6cPZ 提取码:8888(仅供学习参考)。
|
10月前
|
自然语言处理 架构师 Java
飞算 JavaAI:需求、接口、代码,一键全搞定!
飞算 JavaAI 革新了传统的 Java 开发模式,使需求分析、接口设计和代码编写变得简单高效。通过智能语义分析,它能快速理解自然语言描述的需求,精准提取关键信息;自动生成合理的接口方案,确保系统扩展性和稳定性;并根据需求和接口设计生成结构清晰、逻辑严谨的 Java 代码。无论是新手还是资深开发者,都能大幅提升开发效率,减少错误,降低项目成本,助力你在竞争中脱颖而出。
|
JavaScript 前端开发
JavaScript prototype(原型对象)
JavaScript prototype(原型对象)
257 0
|
机器学习/深度学习 边缘计算 算法
深度学习之进化神经网络设计
基于深度学习的进化神经网络设计(Evolutionary Neural Networks, ENNs)结合了进化算法(EA)和神经网络(NN)的优点,用于自动化神经网络架构的设计和优化。
425 1