美文网首页android 开发程序员程序员之家爱情与面包
Android RxJava:这是一份全面 & 详细 的

Android RxJava:这是一份全面 & 详细 的

作者: Carson带你学安卓 | 来源:发表于2018-01-17 09:10 被阅读4801次

    前言

    • Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。
    Github截图

    如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程

    • RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求
    • 今天,我将为大家献上一份 RxJava操作符的详细使用攻略,希望你们会喜欢。
    1. 本系列文章主要基于 Rxjava 2.0
    2. 接下来的时间,我将持续推出 AndroidRxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!
    示意图

    本文所有代码 Demo均存放在Carson_Ho的Github地址


    目录

    示意图

    1. 简介

    RxJava 操作符的具体简介如下:

    示意图

    2. 类型

    • RxJava功能强大,所以其对应的操作符的类型也非常多
    • 根据功能作用的不同,RxJava的操作符分类如下:
    示意图
    • 下面,我将对每类的操作符进行详细讲解

    3. 操作符详解

    注:在使用RxJava 2操作符前,记得在项目的Gradle中添加依赖:

    
    dependencies {
          compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
          compile 'io.reactivex.rxjava2:rxjava:2.0.7'
          // 注:RxJava2 与 RxJava1 不能共存,即依赖不能同时存在
    }
    
    

    3.1 创建操作符

    • 作用
      创建 被观察者( Observable) 对象 & 发送事件。

    • 应用场景

    示意图
    • 类型
      根据上述应用场景,创建操作符的类型包括:
    示意图
    1. 该例子将结合RetrofitRxJava 进行讲解
    2. 具体请看文章:Android RxJava 实际应用讲解:(无条件)网络请求轮询

    3.2 变换操作符

    • 作用
      对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列
    • 具体原理
    示意图
    • 应用场景
      嵌套回调(Callback hell

    • 类型
      根据上述应用场景,常见的变换操作符类型包括:


      示意图
    1. 该例子将结合RetrofitRxJava 进行讲解
    2. 具体请看文章:Android RxJava 实际应用讲解:网络请求嵌套回调

    3.3 组合 / 合并操作符

    • 作用
      组合 多个被观察者(Observable) & 合并需要发送的事件

    • 应用场景

      1. 组合多个被观察者
      2. 合并多个事件
      3. 发送事件前追加发送事件
      4. 统计发送事件数量
    • 类型
      根据上述应用场景,常见的组合 / 合并操作符 主要有:


      示意图

    该例子将结合RetrofitRxJava 进行讲解

    1. Android RxJava 实际应用讲解:合并数据源
    2. Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据
    3. Android RxJava 实际应用讲解:联合判断

    3.4 功能性操作符

    • 作用
      辅助被观察者(Observable) 在发送事件时实现一些功能性需求

    • 实际应用场景

    1. 连接(订阅) 观察者 & 被观察者
    2. 线程调度(切换)
    3. 错误处理
    4. 事件生命周期操作
    5. 延时操作
    6. 重复发送操作
    • 类型
      根据上述应用场景,常见的功能性操作符 主要有:


      示意图

    该例子将结合RetrofitRxJava 进行讲解

    1. Android RxJava:细说 线程控制(切换 / 调度 )(含Retrofit实例讲解)
    2. Android RxJava 实际应用讲解:网络请求出错重连(结合Retrofit)
    3. Android RxJava 实际应用讲解:(有条件)网络请求轮询(结合Retrofit)

    3.5 过滤操作符

    • 作用
      过滤 / 筛选 被观察者(Observable)发送的事件 & 观察者 (Observer)接收的事件

    • 应用场景

      1. 根据 指定条件 过滤事件
      2. 根据 指定事件数量 过滤事件
      3. 根据 指定时间 过滤事件
      4. 根据 指定事件位置 过滤事件
    • 类型
      根据上述应用场景,常见的过滤操作符 主要有:


      示意图
    • 具体操作符 & 应用场景 详细介绍
      Android RxJava:过滤操作符 全面讲解

    • 实际开发需求案例
      下面,我将讲解组合操作符的常见实际需求案例

    该例子将结合RetrofitRxJava 进行讲解

    1. Android RxJava 实际应用讲解:功能防抖
    2. Android RxJava 实际应用讲解:联想搜索优化

    3.6 条件 / 布尔操作符

    • 作用
      通过设置函数,判断被观察者(Observable)发送的事件是否符合条件
    • 类型
      RxJava2中,条件 / 布尔操作符的类型包括:
    示意图

    至此,关于RxJava 2 中的操作符讲解完毕。


    4. 总结

    • 本文主要对 RxJava2 中常用的所有类型操作符进行了详细介绍,下面用1张图进行总结
    示意图
    • 接下来的时间,我将持续推出 AndroidRxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!
    示意图

    请点赞!因为你的鼓励是我写作的最大动力!

    相关文章阅读


    欢迎关注Carson_Ho的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    相关文章

      网友评论

      • Springwu:感谢楼主
      • d2d517553df2:如果没有这么有层次的讲述,如果没有这么有逻辑的图片,估计我学Rxjava要都几倍时间,感谢楼主。
      • ball康:感谢作者付出
      • woitaylor:就这些图就花了不少心血吧!!!
      • stevenMvp:不错,非常棒!
      • thisfeng:我踏🐎的 已经爱上你的 笔记了,搞基嚒兄弟? 知男而上 哈哈
        787ced935c4a:哈哈哈

      本文标题:Android RxJava:这是一份全面 & 详细 的

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