RxJava概述

ReactiveX

ReactiveX是利用可观察数据流实现异步编程的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

RxJava: Reactive Extensions for the JVM

RxJava是Reactive Extensions的Java VM实现,它是一个使用可观察序列编写异步和事件驱动程序的库。它扩展了观察者模式以支持数据和事件序列,并且加入操作符Operator。它将你的注意从低级别线程,线程同步,线程安全和并发数据对象这些复杂问题中转移。

RxJava Package & Class & Interface

1. rx.annotations

2. rx.exceptions

3. rx.functions

所有的Func和Action都继承于Function。

public interface Function {

}

Action0、Action1<T1>、...、ActionN:数字代表方法参数的个数。接口Action2<T1, T2>如下

package rx.functions;

public interface Action2<T1, T2> extends Action {
    public void call(T1 t1, T2 t2);
}

Func0<R>、Func1<T1, R>、...、FuncN<R>:数字代表方法参数的个数,R表示返回值类型。接口Func2<T1, T2, R>如下:

public interface Func2<T1, T2, R> extends Function {
    public R call(T1 t1, T2 t2);
}

Functions和Actions为生产Func、Action的工厂。

该包的UML类图如下:

4. rx.internal

5. Observable与rx.observables

在ReactiveX中,Observer订阅Observable。然后这个Observer对这个Observable释放的数据或数据序列进行响应。这个模式使并发操作变得便利,因为它等待Observable释放数据对象时不需要阻塞,取而代之的是它创建一个Observer形式的哨兵,这个哨兵随时准备响应。

6. Observer与rx.observers

Observer提供了接收基于推模型(push)通知(notification)的机制。在Observable订阅(subscribe)了Observer后,Observable通过调用Observer的onNext方法提供通知。一个正常的Observer将只会调用onCompleted或onError方法一次。

package rx;

public interface Observer<T> {

    public abstract void onCompleted();

    public abstract void onError(Throwable e);

    public abstract void onNext(T t);

}

7. rx.plugins

8. Scheduler与rx.schedulers

9. Subject与rx subjects

Subject在ReactiveX是作为observer和observerable的一个bridge或者proxy。因为它是一个观察者,所以它可以订阅一个或多个可观察对象,同时因为他是一个可观测对象,所以它可以传递和释放它观测到的数据对象,并且能释放新的对象。

一共有四种为不同用途而设计的Subject,分别为AsyncSubject、BehaviorSubject、PublishSubject和ReplaySubject。

package rx.subjects;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;

public abstract class Subject<T, R> extends Observable<R> implements Observer<T> {
    protected Subject(OnSubscribe<R> onSubscribe) {
        super(onSubscribe);
    }

    public abstract boolean hasObservers();

    public final SerializedSubject<T, R> toSerialized() {
        return new SerializedSubject<T, R>(this);
    }
}

10. Subscription、Subscriptions与rx.subscriptions

Subscription是Observable.subscribe(Subscriber)方法返回的对象,可以通过此对象取消订阅。

Subscriptions是一个工具类,其中有一些创建和使用Subscription对象的方法。

时间: 2024-10-13 19:44:15

RxJava概述的相关文章

RxJava开发精要2-为什么是Observables?

原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转载权,未经允许,不得转载! 译者 : yuxingxin 项目地址 : RxJava-Essentials-CN 为什么是Observables? 在面向对象的架构中,开发者致力于创建一组解耦的实体.这样的话,实体就可以在不用妨碍整个系统的情况下可以被测试.复用和维护.设计这种系统就带来一个棘手的负面影响:维

RxJava开发精要3-向响应式世界问好

原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发人员头条享有独家转载权,未经同意.不得转载! 译者 : yuxingxin 项目地址 : RxJava-Essentials-CN 向响应式世界问好 在上一章中,我们对观察者模式有个理论上的高速概述.我们也看了从头開始.从列表.或者从已经存在的函数来创建Observables. 在本章中.我们将用我们学到的来创建我们第一个响

RxJava之错误处理

在Observable发射数据时,有时发送onError通知,导致观察者不能正常接收数据.可是,有时我们希望对Observable发射的onError通知做出响应或者从错误中恢复.此时我们该如何处理呢?下面我们了解下RxJava错误处理相关的操作符. catch 流程图 概述 catch操作符拦截原Observable的onError通知,将它替换为其它的数据项或数据序列,让产生的Observable能够正常终止或者根本不终止. 在RxJava中,catch实现为三个不同的操作符: onErro

RxJava 学习书籍——RxJava Essentials

本书是对Ivan.Morgillo所写一书的中文翻译版本,仅供交流学习使用,严禁商业用途.另外推荐一本姊妹篇<Learning Reactive Programming>. <RxJava Essentials>翻译中文版电子书 在线阅读:http://rxjava.yuxingxin.com 本书内容有 1.RX-from .NET to RxJava 本章带你进入reactive的世界.我们会比较reactive 方法和传统方法,进而探索它们之间的相似和不同的地方. 2.Why

Java架构师成长之道之Java概述与开发环境搭建

Java架构师成长之道之Java概述与开发环境搭建 Java架构师成长之道 2.1 Java概述 Java自从1995年诞生以来,由于赶上了互联网.移动互联网以及大数据的信息技术发展趋势,逐渐由一门高级编程语言演变成开发平台以及运行平台. 开发平台 经过20多年(1995年正式对外公开发布)的发展已经逐步建立起自己强大的生态体系,在大型互联网应用开发,移动端Android开发以及大数据开发占据了广阔的市场,最典型的就是国内互联网巨头-阿里巴巴在其电商.物流.金融.支付.大数据等业务场景中大量使用

RxJava 的基本使用

概述 RxJava 就是一个实现异步操作的库.它可以代替我们的 Handler,AsynTask. 简介 RxJava 最核心的两个东西是 Observables(被观察者,事件源)和 Subscribers(观察者). Observables 发出一系列事件,Subscribers 处理这些事件. 一个 Observable 可以发出零个或者多个事件,知道结束或者出错.每发出一个事件,就会 调用它的 Subscriber 的 onNext 方法,最后调用 Subscriber.onNext()

我把RXjava的源码和这份面试都给你了,你还告诉我面不过拿不到offer?(一)

就在前不久做了一个关于RXJava的相关教学视频,过后整理了关于RxJava的预习资料和相关内容以及图文和相关源码,需要借鉴的可以和我联系~ 一丶 面试辅助路线(全部内容在完整的PDF里都有讲解) (顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)https://github.com/xiangjiana/Android-MS(VX:mm14525201314) 二丶 RXJava预习: JAVA设计模式之观察者模式 1.初步认识 观察者模式的定义:在对象之间定义了一对多的依赖,

Java从0到全栈-Java语言概述与开发环境搭建

Java从0到全栈-Java语言概述与开发环境搭建 Java从0到全栈 Java语言概述 Java发展历史 Java之父-James Golsing 起源 1991年,SUN(Standford University Network)公司的James Golsing领导的工程师小组想要开发一种用于像电视机.微波炉.电话这样的消费类电子产品的小型计算机语言,该产品的特点是由于不同的厂商选择不同的CPU和操作系统,因此要求该语言不能和特定的体系结构绑定在一起,也就是跨平台的.最初将这个语言命名为Oa

第一课 MongoDB 概述与安装

1.课程大纲 本次课主要介绍 MongoDB 背景知识和 MongoDB 的安装与配置,让大家对 MongoDB 有一个初认识. 其基本的知识点包含: NoSQL数据库概述 MongoDB 数据库简单介绍 Linux 下安装 MongoDB 数据库 Mac 和 Windows 下安装 MongoDB 数据库 2.课程简单介绍 MongoDB是由MongoDB.inc研发的一款NoSQL类型的文档型数据库,MonogoDB名字来源于英文单词humongous,这个单词的意思是巨大无比.暗喻Mong