Rxjava入门与使用

认识 rxjava

RxJava是 ReactiveX 在JVM上的一个实现,ReactiveX使用Observable序列 组合异步和基于事件 的程序。

Observable(观察者) 和 Subscriber(订阅者)是两个主要的类。在 RxJava 上,一个 Observable 是一个发出数据流或者事件的类,Subscriber 是一个对这些发出的 items (数据流或者事件)进行处理(采取行动)的类。一个 Observable 的标准流发出一个或多个 item,然后成功完成或者出错。一个 Observable 可以有多个 Subscribers,并且通过 Observable 发出的每一个 item,该 item 将会被发送到 Subscriber.onNext() 方法来进行处理。一旦 Observable 不再发出 items,它将会调用 Subscriber.onCompleted() 方法,或如果有一个出错的话 Observable 会调用 Subscriber.onError() 方法。

rxjava最近之所以这么热门的原因,归根结底是因为它的序列性处理,而这种强大来源于它的操作符。在这里,我不再赘述,网上很多介绍Operator的文章,可以看RxJava中文文档,或者RxJava实战 。相信,当你了解过后,对Rxjava就会有一定思路了。

RxJava 入门

建议看下上面的两篇关于rxjava介绍的文章,这样,你读下去才不会一头雾水,大神除外。

接触rxjava,是因为公司项目组的一个同事用rxjava对登录操作做了回调以及返回原入口界面,基于这样的需求,rxjava进入了世界。。

这边,还要讲到rxjava对处理所在的线程的调控。这也是rxjava的又一个原因。——RxJava 的 Schedulers(调度器) 功能。

对于任何 Observable 你可以定义在两个不同的线程,Observable 会操作在它上面。使用 Observable.observeOn() 可以定义在一个线程上,可以用来监听和检查从 Observable 最新发出的 items (Subscriber 的 onNext,onCompleted 和 onError 方法会执行在 observeOn 所指定的线程上),并使用 Observable.subscribeOn() 来定义一个线程,将其运行我们 Observable 的代码(长时间运行的操作)。

RxJava 默认情况下是单线程的,你会需要利用 observeOn() 和 subscribeOn() 方法为你的应用带来多线程操作。RxJava 附带了几个现成的 Schedulers 给 Observables 使用,如:Schedulers.io() (用于 I/O 操作),Schedulers.computation()(计算工作),和 Schedulers.newThread()(为任务创建的新线程)。

这边,要特别注意一点,当你在activity界面里实现了订阅(Subscription =Observable.subscribe() )后,一定要在界面摧毁时实现反订阅(Subscription.unsubscribe() ),防止内存泄漏!

使用

在没用rxjava之前,为了通知消息,从这个页面通知上个页面数据显示做改变,或者这个页面数据改变,通知相关的多个页面做改变,我们会想到回调,或者广播。然而这样写是恶心的,具体怎么恶心,你自己写写估计就知道了。现在有了rxjava,发现实现上简单多了,还有扩展性,嗯,来操作一番!

首先,Android Studio建立一个测试工程TestApp, 在build.gradle构建中实现需要的rxjava依赖信息

这样我们就可以在类文件里引用需要的rxjava method.

其次,建立一个rx刷新事件(RxRefreshEvent),具体实现如下:

  • getObservable(): 主要是为了外面的类可以得到这个观察者,实现操作监听。
  • Publish(T t): 用于观察者基于需求发布相关的消息,以便Subsribers实现操作。

接着,同时建立一个观察者发布消息界面,以及一个订阅者接受显示界面:

这样,一个简单的demo就完成了。当观察者需要将改变后的数据通过publish()发送出去,订阅者由于订阅关系,在Action-call()方法中回调。嗯,完成了数据的改变!这个发布消息的过程,其实是一对多的,也就是多个订阅者都可以收到同一个观察者发来的消息。就几句代码,简单实用!

时间: 2024-10-07 23:09:17

Rxjava入门与使用的相关文章

RxJava入门优秀博客推荐

RxJava用了快半年了,现在越来越离不开这个库,从使用到逐渐接触它的背后实现,突然想写点什么关于RxJava的内容.在酝酿如何组织内容的时候,就去看看自己关于RxJava的收藏,发现满满的干货! 1.抛物线:给 Android 开发者的 RxJava 详解,我的RxJava入门老师,从原理到用法到实现,面面俱到,非常nice! 2.hi大头鬼hi:深入浅出RxJava(一:基础篇),这是篇翻译文章,偏重用使用RxJava,对于操作符的讲解还不错,值得一看. 3.RxJava wiki:http

RxJava入门系列四,Android中的响应式编程

RxJava入门系列四,Android中的响应式编程 在入门系列1,2,3中,我基本介绍了RxJava是如何使用的.但是作为一名Android开发人员,你怎么让RxJava能为你所用呢?这篇博客我将针对Android开发来介绍一下RxJava的使用场景. RxAndroid RxAndroid是为Android打造的RxJava扩展.通过RxAndroid可以让你的Android开发变得更轻松. 首先,RxAndroid中提供了AndroidSchedulers,你可以用它来切换Android线

RxJava入门系列三,响应式编程

RxJava入门系列三,响应式编程 在RxJava入门系列一,我向你介绍了RxJava的基础架构.RxJava入门系列二,我向你展示了RxJava提供的多种牛逼操作符.但是你可能仍然没能劝服自己使用RxJava,这一篇博客里我将向你展示RxJava提供的其他优势,没准了解了这些优势,你就真的想去使用RxJava了. 异常处理 直到目前为止,我都没有去介绍onComplete()和onError()方法.这两个方法是用来停止Observable继续发出事件并告知观察者为什么停止(是正常的停止还是因

史上最浅显易懂的RxJava入门教程

RxJava是一个神奇的框架,用法很简单,但内部实现有点复杂,代码逻辑有点绕.我读源码时,确实有点似懂非懂的感觉.网上关于RxJava源码分析的文章,源码贴了一大堆,代码逻辑绕来绕去的,让人看得云里雾里的.既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能.兼容性.扩展性有关的代码剔除,留下核心代码带大家揭秘 RxJava 的实现原理. 什么是RxJava ? Rx是Reactive Extensions的简写,翻译为响应的扩展.也就是通过由一方发出信息,另一方响

RxJava入门之路(一)

RxJava接触过蛮长时间了,但是让我说个所以然来还是说不出来,归根结底还是还是理解不够深刻,趁着年底这个时候争取写个系列出来给自己的学习做个记录 注意区分RxJava1.0和2.0的区别,以下默认是在2.0的基础上做的测试 先来理解几个概念: 1.Observable : 字面意思可观察的,被观察者,也就是事件的发生者 2.Observer:观察者,也就是事件的接受者 3.subscribe():两者产生订阅关系,需要注意一点的是 observable.subscribe(observer),

RxJava入门

项目小版本上线,抽空简单学习了下久仰大名的RxJava 一.引入 个人觉得rxjava的特点: 强大灵活的事件流处理(多线程/多事件/复合对象) 强大灵活优雅简洁的异步 链式调用 可自动Lambda化 实现:RxJava 是通过一种扩展的观察者模式来实现的 类比 类比 实际 实际 职责 演讲者 Button (可)被订阅者 (同右) (可)被观察者 Observable 决定什么时候触发事件以及触发怎样的事件 听众 OnClickListener 订阅者 Subscriber 观察者 Obser

rxJava入门学习笔记

前言 现在rx系列似乎是火的不行了,一打开群就是各种rxJava.rxAndroid. 最近正恶补各种新技术来充实自己,所以前些天写完两篇介绍JuheNews项目的文章之后,马上又开始加入了学习rxJava的阵营当中. 欢迎来到rxJava 刚开始看rxJava的系列文章的时候,一万头草泥马在心里来回奔腾:这tm跟屎一样的东西写的都是个啥?现在开始找到了一点感觉了. 网上很多大神都把rxJava看成设计模式中的观察者模式,刚开始接触它的时候,它的链式调用我反而感觉有点像建造者模式(比如Alert

RxJava入门七问(一)

1. RxJava采用了观察者模式,什么是观察者模式呢,能不能举个例子? 答: 小偷(被观察者)把手伸进路人的钱包后(事件),给警察(观察者)发了条短信,曰:快来抓我哟!警察收到信息后,立马采取行动,把小偷按倒在地(行动) 这个小偷是不是很贱,偷东西还要告诉警察 2. 一个语文作业题:分析下面这句话的主.谓.宾 observable.subscribe(observer) 答: - 主语:observable 被观察者 - 谓语:subscribe 订阅 - 宾语:observer 观察者 题外

在android 上 使用 rxjava 入门篇

什么是 rxJava? RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences. 简单来说,rxJava 是一种 基于事件的,使用了可被观察序列 的异步 响应 扩展 的类库. 这句话有这几个意思: rxJava 是解决 异步问题的. rxJava 是基于