| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> RXJAVA从入门到精通 -> 正文阅读 |
|
[移动开发]RXJAVA从入门到精通 |
RxJava是一个基于事件流的实现异步操作的框架(库),其作用是实现异步操作,类似于Android中的AsyncTask,那么为什么RxJava可以在众多异步操作的库中脱颖而出深受广大开发者喜爱呢?原因在于其逻辑简单、使用方便、条理清晰的特点,本文将由浅至深、由易到难一步一步带你理解和使用RxJava。 本文目录如下: RxJava原理初探既然RxJava是为了异任务而引入的,那么我们首先引入一个生活中异步任务的小例子:假设小王周末要出去逛街,她出门以后用滴滴打车App叫了一个顺风车,然后顺风车主接到滴滴打车App派发的任务后开车去接小王,最后小王等到车,然后去开心的逛街之旅,整个事件的流程是这样的: 那么将上述例子抽象到代码层面,RxJava实现上述场景的原理是这样的,首先将一个完整的异步任务分为以下几个角色:
这样进行抽象的话我们就可以将上述实例的过程抽象为以下流程: 需要注意的一点是,被观察者可以连续发出多条事件请求给观察者,在此处由于实例限制只发送了一条事件(打车事件),但是在实际的应用场景中被观察者可以发送多条事件给观察者进行处理。总结一下RxJava的简要原理如下图所示: 从上图中我们应该明确:
至此,我们就理清了RxJava的大概原理和理念,接下来我们来看看如何使用RxJava实现我们上述的实例。 RxJava入门使用在使用之前请大家要先在自己的项目中添加RxJava的依赖:
具体的实现我们分为两部分,第一部分是分步实现,旨在向大家说明RxJava的原理、让大家对RxJava的原理有更加深入的认识,第二部分是我们平时在生产中建议使用的、比较简洁的写法,需要注意的是这两部分都能实现相同的功能,大家根据自己的喜好在实际生产中选择对应方法即可。 分步实现 分布实现主要分为3步:
创建被观察者并且生产事件 代码与注释齐飞更容易理解: 注意3点:
创建观察者并监听事件 直接看代码,注意注释: 注意2点:
通过订阅将观察者和被观察者连接起来 这一步比较简单: 直接调用被观察者(小王)的订阅方法(subscribe()),将观察者(司机)传入即可。 实际的运行效果如下: 基于事件流的链式调用 上一节的分步实现旨在向大家说明RxJava的原理,本节我将为大家介绍一种更加简洁的写法,即与事件流的链式调用法: 实际的运行效果如下: 可以看到,两种写法都可以达到相同的效果,但是很明显第二种写法更加简洁、条理更加清晰,更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简洁和优雅。所以,一般建议使用这种基于事件流的链式调用方式实现RxJava。 如何切断观察者与被观察者之间的连接有的时候我们可能需要在接收到某个事件之后切断观察者与被观察者之间的联系,这个时候就可以使用Disposable.dispose() 方法,比如: 运行结果如下: 可以看到,当使用Disposable.dispose() 将观察者与被观察者之间的连接切断后,后序的所有被观察者发送的事件都不会被观察者接收(不管是Next事件还是Error事件还是Complete事件),但是被观察者可以正常发送事件。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/5 22:58:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |