重新认识RxJava系列之基本使用

本文详细解析RxJava2.0版本的使用流程,包括被观察者、观察者及订阅的概念,探讨其代码逻辑简洁、实现优雅的优点,以及如何创建Observable和Observer。

前言

依稀记得第一次接触RxJava时,对着文档撸了一遍。仍然是懵懵的,为啥呢?当然是因为菜,哈哈。现在重新来学习下RxJava,重新认识它究竟有什么样的魅力。对于RxJava 1.xx版本和RxJava 2.xx版本,本质上没有什么区别,只是RxJava 2.xx版本增加了新特性。所以,我们直接来学习RxJava 2.xx版本,本系列主要分为以下几部分。

  • RxJava 2.xx版本基本使用
  • RxJava 2.xx版本源码分析
  • RxJava 2.xx版本实战

基本使用

优点

  • 代码逻辑简洁
  • 实现优雅
  • 使用方便

代码逻辑简洁

看到这个优点,想必同学们心里有数了。可以想象下我们项目的代码特别特别多,看着就头疼。但是使用RxJava时,代码逻辑会变得简洁,方便我们阅读代码。

实现优雅

这个优点,我觉得就是俩字,牛逼。让人一看,就觉得代码风格特别高大上。

组成

  • 被观察者(Observable),产生事件
  • 观察者(Observer),接受事件并作出响应
  • 订阅(Subscribe),连接被观察者和观察者

创建被观察者

create()

   Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> e) throws Exception {
                e.onNext(1);
                e.onNext(2);
                e.onNext(3);
                e.onComplete();
            }
        });
复制代码

上面代码就是创建Observable的基本方式,通过create方法来创建。那么我们来看一下方法内的几个参数

ObservableOnSubscribe

public interface ObservableOnSubscribe<T> {

    /**
     * Called for each Observer that subscribes.
     * @param e the safe emitter instance, never null
     * @throws Exception on error
     */
    void subscribe(ObservableEmitter<T> e) throws Exception;
}
复制代码

从源码中可以看出ObservableOnSubscribe是一个接口,里面有一个subscribe方法,也就是我们创建Observable实现的方法。

ObservableEmitter

public interface ObservableEmitter<T> extends Emitter<T> {

    void setDisposable(Disposable d);

    void setCancellable(Cancellable c);
    
    boolean isDisposed();

    ObservableEmitter<T> serialize();
}
复制代码

可以看出ObservableEmitter也是一个接口,并且继承了Emitter,然后我们来看一下Emitter。

public interface Emitter<T> {

    void onNext(@NonNull T value);

    void onError(@NonNull Throwable error);

    void onComplete();
复制代码

从Emitter中就可以看到熟悉的方法了,这三个方法就是我们常用的发送事件相关的方法。

onNext()

发送该事件时,观察者会回调该方法。简单点,就是用来发送事件

onError()

发送该事件后,其他事件不再发送。通过方法名字,也知道该方法表示发生错误

onComplete()

发送该事件后,其他事件不再发送。与onError()不同的是, onComplete()表示所有的事件都发送完毕,然后事件不再发送。

subscribe方法

主要是通过ObservableEmitter来产生事件,并通知Observer。

Observable.just()

Observable observable = Observable.just(1,2,3);
复制代码

just()表示创建被观察者,并发送事件。比如上面的代码中通过just方法创建了一个Observable,并且发送了三个事件。效果相当于以下代码

e.onNext(1);
e.onNext(2);
e.onNext(3);
e.onComplete();
复制代码

需要注意的是,just方法发送的事件不能超过10个,在使用时,同学们需要特备注意哦。

Observable.fromArray()

Integer[] integers = {1,2,3};
Observable observable = Observable.fromArray(integers);
复制代码

可以看出与just方法不同的是,fromArray方法可以传入一个数组,并且传入多于10个以上的参数。然后实现效果也是创建被观察者并发送相应的事件,与just方法类似。

创建观察者

创建观察者有以下2种方式,我们来看一下。

实现Observer接口

     Observer<Integer> observer = new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
               //最先调用onSubscribe
            }

            @Override
            public void onNext(Integer integer) {
                //对onNext事件响应
            }

            @Override
            public void onError(Throwable e) {
                //对onError事件响应
            }

            @Override
            public void onComplete() {
                //onComplete事件响应
            }
        };
复制代码

通过实现Observer接口来创建观察者,从上面的代码可以看到比较熟悉的几个方法。对于onSubscribe方法,它是最先调用的,其他三个方法都是对事件作出响应。

Subscriber

     Subscriber<Integer> subscriber = new Subscriber<Integer>() {
            @Override
            public void onSubscribe(Subscription s) {
                //最先调用onSubscribe
            }

            @Override
            public void onNext(Integer integer) {
                //对onNext事件响应
            }

            @Override
            public void onError(Throwable t) {
                //对onError事件响应
            }

            @Override
            public void onComplete() {
                //onComplete事件响应
            }
        };
复制代码

可以看出通过Subscriber和Observer创建观察者是差不多的。

订阅

 observable.subscribe(observer);
复制代码

调用subscribe方法就可以将被观察者和观察者订阅在一起了,当被观察者发送事件时,观察者就会作出响应。

总结

大概分析了下RxJava 2.xx版本的使用流程,了解了如何创建被观察者、观察者以及订阅。

转载于:https://juejin.im/post/5c28560ce51d457455450aac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值