专栏名称: Carson_Ho
1. 简书认证作者、CSDN签约作者、稀土掘金专栏作者 2. 专注分享 Android开发干货 3. 博客地址 Github: https://github.com/Carson-Ho CSDN: http://blog.csdn.net/carson_ho 稀土掘金: https://juejin.im/user/58d4d9781b69e6006ba65edc
目录
相关文章推荐
开发者全社区  ·  男朋友和女领导的聊天记录 ·  19 小时前  
开发者全社区  ·  突发:DeepSeek被封杀 ·  22 小时前  
开发者全社区  ·  邻家弟弟好厉害 ·  昨天  
开发者全社区  ·  裸辞1天 vs 裸辞10天 vs 裸辞30天 ·  2 天前  
51好读  ›  专栏  ›  Carson_Ho

Android RxJava:这是一份全面 & 详细 的RxJava操作符 使用攻略

Carson_Ho  · 简书  · android  · 2018-01-17 09:10

正文

前言

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

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

  • RxJava 如此受欢迎的原因,在于其 提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求
  • 今天,我将为大家献上一份 RxJava 操作符的详细使用攻略,希望你们会喜欢。
  1. 本系列文章主要基于 Rxjava 2.0
  2. 接下来的时间, 我将持续推出 Android Rxjava 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. 该例子将结合 Retrofit RxJava 进行讲解
  2. 具体请看文章: Android RxJava 实际应用讲解:(无条件)网络请求轮询

3.2 变换操作符

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

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


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

3.3 组合 / 合并操作符

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

  • 应用场景

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


    示意图

该例子将结合 Retrofit RxJava 进行讲解

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

3.4 功能性操作符

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

  • 实际应用场景

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


    示意图

该例子将结合 Retrofit RxJava 进行讲解

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

3.5 过滤操作符

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

  • 应用场景

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


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

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

该例子将结合 Retrofit RxJava 进行讲解

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

3.6 条件 / 布尔操作符

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

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


4. 总结

  • 本文主要对 RxJava2 中常用的所有类型操作符进行了详细介绍,下面用1张图进行总结






请到「今天看啥」查看全文


推荐文章
开发者全社区  ·  男朋友和女领导的聊天记录
19 小时前
开发者全社区  ·  突发:DeepSeek被封杀
22 小时前
开发者全社区  ·  邻家弟弟好厉害
昨天
开发者全社区  ·  裸辞1天 vs 裸辞10天 vs 裸辞30天
2 天前
金羊毛工作坊  ·  中财办首度详解“灰犀牛”
7 年前
社会主义羊毛  ·  卡 | 热血铸军魂,新卡助后勤
7 年前