RxJava的简单使用
这是篇内容浅显的,短小无力的文章,但希望通过这篇文章能让你在进入RxJava这个大海前,能找到个入口。
目前来说RxJava还是比较重要的,作为目前对异步处理的常用方式,怎么通过RxJava轻松惬意,且逻辑清楚地处理异步等操作是学习该框架的主要方向和目的。现在不知不觉中,RxJava3.0都已经磨出来了,在此掌握对这个框架的基本使用和原理显得已经非常有意义了。是目前网络请求和异步操作的常客。
前提
在进行RxJava使用前,进行依赖添加是必不可少的,而对于Android平台,还有专供的Android的平台版本RxAndroid。其实就是针对Android平台进行了少量类的优化。在本文中采用RxJava2。
其中对RxJava2的依赖添加方式如下:
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
其中对RxJava3的依赖添加方式如下:
如果使用RxJava3.0的版本的话,其实会对手机最小安装的sdk有要求,minSdk>26
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
如果想要查看或依赖RxJava框架的最新版,可以去github官网进行查看
https://github.com/ReactiveX/RxJava
原理简述
为了更好的对RxJava的使用进行讲解,这边我准备根据下面的图进行讲解,依据图形能快速吸收知识这点我还是很相信的。

RxJava是典型的基于事件流的处理,它主要是对事件流更新的一个回调处理,这里拿数据更新做例子,每次当被观察者有一些变化,都会回调订阅方法,然后通过订阅方法通知观察者数据已经发生了变化,这里也可以把变化了的数据发送给观察者,观察者在进行一些处理,比如数据更新到View上,或者处理等等操作,最后如果数据错误会调用onError方法,如果更新完成会进行Complete处理。这样的观察模式我们也较观察者模式。
观察者模式有两个主要的角色:可观察者Observable和观察者Observer。可观察者Observable也就是被观察者,它是用来被观察者观察的,观察者一般首先会订阅一些被观察者,也就是说,这些被观察者一旦发生变化,应该及时通知观察者,正如我们订阅杂志一样,一旦有新的杂志会自动发送给我们。
被观察者
被观察者
被观察者也就是这里的Observable,在被观察者中会通过ObservableOnSubscribe类进行订阅,在该类中有个subscribe()方法,事件值就是通过这个方法进行发送给所有的观察者,这一点在图上已经很明显的显示处理来了。
public interface ObservableOnSubscribe<@NonNull T> {
/**
* Called for each {@link Observer} that subscribes.
* @param emitter the safe emitter instance, never {@code null}
* @throws Throwable on error
*/
void subscribe(@NonNull ObservableEmitter<T> emitter) throws Exception;
}
一个被观察者一般发送三种事件:
1、数据值 (事件值)
2、完成Completion, 用来表示再也没有更多数据推送了。
3、错误Errors,如果在推送期间发生错误,这一系列事件意味着中断了。
观察者
观察者也就是Observer,Observer这个类在下述中是作为一个接口存在,单纯从这个接口我们可以知道作为观察者的三个接口方法是一定会被激活执行的,下述中可以通过注释来了解这些方法的大致作用,因为是英文这里就简单描述下主要功能:
onSubscribe(Disposable d):
1、通过同步或异步的方式,和被观察者建立连接
2、我们也可以通过Disposable对这个连接进行打断
onNext(T t):
1、这是个可能会被调用0次或更多次的方法
2、在调用onCompleted方法后将不会再次调用这个方法
3、其中t是由可观察对象发出的项
onError( Throwable e)
1、如果遇到异常或者错误条件就会执行这个方法
2、e是被观察对象遇到的异常
onComplete()
1、通过观察者,被观察者已经发送完基于推送的通知
2、和onError互斥,执行了onError()方法就不会再执行这个方法
public interface Observer<@NonNull T> {
/**
* Provides the {@link Observer} with the means of cancelling (disposing) the
* connection (channel) with the {@link Observable} in both
* synchronous (from within {@link #onNext(Object)}) and asynchronous manner.
* @param d the {@link Disposable} instance whose {@link Disposable#dispose()} can
* be called anytime to cancel the connection
* @since 2.0
*/

本文介绍RxJava在异步处理中的应用,包括基本概念、依赖添加、原理简述及简单使用示例。通过理解被观察者Observable和观察者Observer的角色,掌握线程切换和事件流处理。
最低0.47元/天 解锁文章
661

被折叠的 条评论
为什么被折叠?



