RxJava 有四个基本概念:
Observable (可观察者,即被观察者)
Observer (观察者)
subscribe (订阅)
事件
Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer
Android 常见的观察者模式:
与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted() 和 onError()
onCompleted():事件队列完结。RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。RxJava 规定,当不会再有新的 onNext() 发出时,需要触发 onCompleted() 方法作为标志
onError():事件队列异常。在事件处理过程中出异常时,onError() 会被触发,同时队列自动终止,不允许再有事件发出
在一个正确运行的事件序列中, onCompleted() 和 onError() 有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted() 和 onError() 二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
===============================================================================
Observable 和 Observer 通过 subscribe() 方法实现订阅关系
RxJava 的事件回调方法 onNext() 、onCompleted() 和 onError()
如果一个Observable 中没有任何的 Observer ,那么这个Observable是不会发出任何事件的
第三点说明:
在RxJava 中 Obseravable 有两种启动方式:热启动 和 冷启动
热启动 Obseravable在任何时候都会发送消息,即使没有任何观察者监听它
冷启动 Obseravable只有在至少有一个监听者时才会发送消息
热启动平时用不到,所以我们工作中用到的都是冷启动。
====================================================================================
RxJava的实现主要有如下三步:
第一步:创建观察者Observer。
Observer 即观察者,它决定事件触发的时候将有怎样的行为。注意:Observer是 个接口。
第二步:创建被观察者Observable。
第三步:Subscribe(订阅)(被观察者Observable订阅观察者Observer,注意:不同于普通观察者,这里是被观察者订阅观察者)。
创建 Observable 和 Observer 之后,再 subscribe() 法将它们联结起来,整条链子就可以 作 。代码形式很简单:
所以贴出之前实现过的代码:
编译运行:
这时制造一个异常再看下输出:
编译运行:
从打印中可以看出,onError()和onCompleted()是不共戴天滴。
除 Observer 接口之外,RxJava 还内置了一个实现 Observer 的抽象类:Subscriber(发 [səb’skraɪbɚ])。 Subscriber 对 Observer 接口进行了一些扩展,但他们的基本使用方式是完全一样的:
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618165277)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!