美文网首页
RxJava 核心概念

RxJava 核心概念

作者: jkwen | 来源:发表于2021-06-18 23:46 被阅读0次

我对 RxJava 三个版本的理解是相互不兼容的,但也是一个迭代演进的过程。所以想着从最初的版本开始探究一番本源。

本篇就是把几个核心类/接口梳理一番,并做记录,便于理解和日后的回顾。其实也可以说是对「RxJava 反应式编程」第 2 章内容的一个读后感。

先说 RxJava 的核心思想:为了缓解异步和事件驱动编程的痛苦。事件驱动编程的概念可能不好懂,我觉得也没必要一定要理解,总之就是为了更友好的去解决异步编程等相关的事。

Observable

Observable 可以理解为一个事件流,代表一个事件起源吧。它是基于推送的,也就是说随着事件的流动会被推送给它的订阅者们。

Observable 能产出三种事件流向,

  • Observable 声明的类型为 T 的值
  • 完成事件
  • 错误事件

RxJava 提供了一些静态方法用于创建 Observable 对象,例如 just, range, empty, never, error 等。当然创建 Observable 对象的核心方法还是在 create 方法上。RxJava 另外一个重要概念 操作符 也会对 Observable 对象进行包装和增强。

这里说的 Observable 对象,默认说的是 cold 类型,也就是延迟执行的,只有等到订阅的时候,事件才会开始流起来。相对而言,hot 类型的 Observable 对象在创建或者获取到的时候,事件就可能已经开始了。

订阅者 Observer

前面说的是事件流 Observable,在没有订阅者观察时它是不会有任何产出的(这个可能结合源码分析会更好理解,这里先了解个概念),而想要订阅就要通过 Observable 的 subscribe() 方法。

订阅者可以是 Observer,它能观察 Observable 产出的三种事件流,分别对应着回调方法,

  • onNext
  • onError
  • onCompleted

不过,Observer 显然不能取消订阅,如果想取消,可以用 Subscriber。因为 Subscriber 实现了 Subscription 接口,后者可以进行取消订阅的操作。

以上便是我认为的 RxJava 最为核心的东西,后面的很多东西都会围绕着这些概念展开,但不管怎么变,最本质的依然是这些,所以我认为有必要先了解这些,否则后面的东西看起来就会含糊不清,逻辑不明。

参考内容

「RxJava 反应式编程」

相关文章

  • RxJava 核心概念

    我对 RxJava 三个版本的理解是相互不兼容的,但也是一个迭代演进的过程。所以想着从最初的版本开始探究一番本源。...

  • RxJava2

    一、RxJava GitHub: RxJava2Demo 二、RxJava的概念 RxJava RxAndroid...

  • Rxjava的理解

    Rxjava复习专用 Rxjava —— 四个基本概念 RxJava 有四个基本概念:Observable (可观...

  • RxJava2初探

    1.RxJava概念及原理 RxJava – Reactive Extensions for the JVM – ...

  • Rxjava 基础原理之总结

    简述: RxJava引入的目的:异步,代码更清晰 1.基础概念: RxJava的使用Action 2.Rxjava...

  • RxJava1.x总结

    一、RxJava概念: 1、RxJava 有四个基本概念:Observable (可观察者,即被观察者)、 Obs...

  • Android Rxjava系列(简介)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJav...

  • rxjava笔记(1)

    rxjava的基础概念 观察者模式于发布-订阅模型rxjava有四个基础概念 Observable 被观察对象 O...

  • RxJava的学习笔记(三)线程调度

    前言 RxJava的学习笔记(一)基础概念RxJava的学习笔记(二)操作符RxJava的学习笔记(三)线程调度上...

  • RxJava的学习笔记(一)基础概念

    前言 RxJava的学习笔记(一)基础概念RxJava的学习笔记(二)操作符RxJava的学习笔记(三)线程调度去...

网友评论

      本文标题:RxJava 核心概念

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