前言

  • 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) 对象 & 发送事件。

  • 应用场景

示意图
  • 类型
    根据上述应用场景,创建操作符的类型包括:
示意图
  • 具体操作符 & 应用场景 详细介绍
    Android RxJava:最基础的操作符详解 - 创建操作符

  • 实际开发需求案例
    下面,我将讲解创建操作符的1个常见实际需求案例:网络请求轮询

  1. 该例子将结合RetrofitRxJava 进行讲解
  2. 具体请看文章:Android RxJava 实际应用讲解:(无条件)网络请求轮询

3.2 变换操作符

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

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


    示意图
  • 具体操作符 & 应用场景 详细介绍
    Android RxJava:图文详解 变换操作符

  • 实际开发需求案例
    下面,我将讲解变换操作符的1个常见实际需求案例:网络请求嵌套回调

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

3.3 组合 / 合并操作符

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

  • 应用场景

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


    示意图
  • 具体操作符 & 应用场景 详细介绍
    Android RxJava:组合 / 合并操作符 详细教程

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

该例子将结合RetrofitRxJava 进行讲解

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

3.4 功能性操作符

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

  • 实际应用场景

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


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

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

该例子将结合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中,条件 / 布尔操作符的类型包括:
示意图
  • 具体操作符详解
    Android RxJava:详解 条件 / 布尔操作符

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


4. 总结

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

感兴趣的同学可以继续关注本人运营的Wechat Public Account

  • 我想给你们介绍一个与众不同的Android微信公众号(福利回赠)
  • 我想邀请您和我一起写Android(福利回赠)

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

相关文章阅读

  • 操作符使用
    Android:这是一篇 清晰 & 易懂的Rxjava 入门教程
    Android RxJava:最基础的操作符详解 - 创建操作符
    Android RxJava:图文详解 变换操作符
    Android RxJava:组合 / 合并操作符 详细教程
    Android RxJava:功能性操作符 全面讲解
    Android RxJava:过滤操作符 全面讲解
    Android RxJava:详解 条件 / 布尔操作符
  • 实际应用讲解
    Android RxJava 实际应用讲解:(无条件)网络请求轮询
    Android RxJava 实际应用讲解:(有条件)网络请求轮询
    Android RxJava 实际应用讲解:网络请求嵌套回调
    Android RxJava 实际应用讲解:合并数据源
    Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据
    Android RxJava 实际应用讲解:联合判断
    Android RxJava:细说 线程控制(切换 / 调度 )(含Retrofit实例讲解)
    Android RxJava 实际应用讲解:网络请求出错重连(结合Retrofit)
    Android RxJava 实际应用讲解:(有条件)网络请求轮询(结合Retrofit)
    Android RxJava 实际应用讲解:功能防抖
    Android RxJava 实际应用讲解:联想搜索优化
  • 额外重要知识
    Android :全面解析RxJava 背压策略
    Android RxJava:2.0 相对于 1.0的更新 & 变化(含 RxJava 1.0的更新使用)
    Android:Retrofit 结合 RxJava的优雅使用(含实例教程)

欢迎关注Carson_Ho的!

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

更多相关文章

  1. Android(安卓)App压力测试(Monkey和ADB)
  2. Android事件处理模型一(基于回调机制的事件处理)
  3. 【Android】SQLiteOpenHelper类(sql语句实现增删改查),封装SQLite
  4. Android图解浅析事件拦截机制
  5. Android(安卓)RxJava实际应用案例讲解:使用RxJava的最佳开发场景
  6. AndroidUI学习
  7. 浅看Android与IOS
  8. Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形,
  9. 最全面的Android(安卓)Intent机制讲解

随机推荐

  1. android webview将网页内容导出为图片和P
  2. 全局参数
  3. 移动端判断当前环境是否是微信、IOS、安
  4. 如何在Ubuntu12.1下安装Android(安卓)NDK
  5. Android(安卓)API 中文 (53) —— BaseAdap
  6. android 8.0后打开wifi热点以及更改热点
  7. TextView设置中文粗体
  8. Android(安卓)webview 使用自定义字体
  9. Android(安卓)简单2D绘图
  10. android 动态修改菜单menu