Android:手把手带你入门神秘的 Rxjava 您所在的位置:网站首页 rxjava链式调用 Android:手把手带你入门神秘的 Rxjava

Android:手把手带你入门神秘的 Rxjava

2022-05-09 11:58| 来源: 网络整理| 查看: 265

原标题:Android:手把手带你入门神秘的 Rxjava

前言

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

本文主要: 面向 刚接触Rxjava的初学者 提供了一份 清晰、简洁、易懂的Rxjava入门教程 涵盖 基本介绍、原理 & 具体使用等 解决的是初学者不理解Rxjava原理 & 不懂得如何使用的问题

希望你们会喜欢。

本文主要基于Rxjava 2.0 如果读者还没学习过Rxjava 1.0也没关系,因为Rxjava 2.0只是在Rxjava 1.0上增加了一些新特性,本质原理 & 使用基本相同 接下来的时间,我将持续推出 Android中 Rxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!

目录

1. 定义

RxJava 在 GitHub 的介绍: RxJava:a library for composing asynchronous and event-based programs using observable sequences for the Java VM// 翻译:RxJava 是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 总结:RxJava 是一个 基于事件流、实现异步操作的库 2. 作用

实现异步操作

类似于 Android中的 AsyncTask 、Handler作用

3. 特点

由于 RxJava的使用方式是:基于事件流的链式调用,所以使得 RxJava:

逻辑简洁 实现优雅 使用简单

更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简洁 & 优雅

4. 原理 4.1 生活例子引入

我用一个生活例子引入 & 讲解 Rxjava原理: 顾客到饭店吃饭

4.2 Rxjava原理介绍

Rxjava原理 基于 一种扩展的观察者模式 Rxjava的扩展观察者模式中有4个角色: 角色 作用 类比 被观察者(Observable) 产生事件 顾客 观察者(Observer) 接收事件,并给出响应动作 厨房 订阅(Subscribe) 连接 被观察者 & 观察者 服务员 事件(Event) 被观察者 & 观察者 沟通的载体 菜式 具体原理

请结合上述 顾客到饭店吃饭 的生活例子理解:

即RxJava原理可总结为:被观察者 (Observable) 通过 订阅(Subscribe) 按顺序发送事件 给观察者 (Observer), 观察者(Observer) 按顺序接收事件 & 作出对应的响应动作。具体如下图:

至此,RxJava原理讲解完毕。

5. 基本使用

本文只关注 RxJava的基本使用,更深入的RxJava使用请继续关注Carson_Ho的安卓开发笔记 Rxjava的使用方式有两种: 分步骤实现:该方法主要为了深入说明Rxjava的原理 & 使用,主要用于演示说明 基于事件流的链式调用:主要用于实际使用 5.1 方式1:分步骤实现 5.1.1 使用步骤

5.1.2 步骤详解 步骤1:创建被观察者 (Observable )& 生产事件

即 顾客入饭店 – 坐下餐桌 – 点菜 具体实现 // 1. 创建被观察者 Observable 对象 Observable observable = Observable.create(new ObservableOnSubscribe() { // create() 是 RxJava 最基本的创造事件序列的方法 // 此处传入了一个 OnSubscribe 对象参数 // 当 Observable 被订阅时,OnSubscribe 的 call() 方法会自动被调用,即事件序列就会依照设定依次被触发 // 即观察者会依次调用对应事件的复写方法从而响应事件 // 从而实现被观察者调用了观察者的回调方法 & 由被观察者向观察者的事件传递,即观察者模式 // 2. 在复写的subscribe()里定义需要发送的事件 @Override public void subscribe(ObservableEmitter emitter) throws Exception { // 通过 ObservableEmitter类对象产生事件并通知观察者 // ObservableEmitter类介绍 // a. 定义:事件发射器 // b. 作用:定义需要发送的事件 & 向观察者发送事件 emitter.onNext(1); emitter.onNext(2); emitter.onNext(3); emitter.onComplete(); } });// 方法1:just(T...):直接将传入的参数依次发送出来 Observable observable = Observable.just("A", "B", "C"); // 将会依次调用: // onNext("A"); // onNext("B"); // onNext("C"); // onCompleted();// 方法2:from(T[]) / from(Iterable


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有