RxJava使用总结

##.简介

    RxJava是是一个基于事件流处理来实现异步操作的库。对于需要切换线程来异步处理的场景,能够简化代码编写,提高代码可读性。官网地址: ReactiveX

一、使用流程概括和示例

1.它是按照观察者模式来设计的

    被观察者负责生产事件,观察者负责处理事件,一旦观察者 订阅了 被观察者,就会触发被观察者发送事件流。
    这里的“事件”是一个抽象概念,它的载体是一个数据结构(例如String/Object/自定义对象等),传递的实际上是数据,只是在观察者模式中它们的角色是“事件”。事件流对应的,是要传递的数据流。
    RxJava使用基于事件流的链式调用,事件“从上游流向下游”,中间可以多次做各种处理和变换,最终流到最下游被处理掉。最初的被观察者是事件流的源头,而观察者位于事件流的最下游。

2.使用流程和示例

大致可分为3步:
1)创建被观察者,编写事件生产和发送逻辑;
    通过事件发射器 FlowableEmitter的onNext()/onComplete()/onError()等来传递事件。
2)创建观察者,编写事件处理逻辑;
    通过自己的 onNext()/onComplete()/onError()等来接受事件并处理。
    注意:上游事件发送正常结束时 onComplete()被调用, onError()在出错时被调用,二者出现时都意味着事件流处理结束,但二者只会有一个被调用到。
3)观察者 订阅 被观察者,触发 被观察者生产和发送时间,然后观察者接收事件并处理。
代码示例和注释讲解:
/**
* 1.创建被观察者
* 有多种创建方式,这是其中较常见一种,通过Create()方法创建
* 第二个参数是背压策略
*/
Flowable<String> flowable = Flowable.create(new FlowableOnSubscribe<String>() {
    /**
     * 被订阅后,会触发调用该方法
     * @param emitter   事件发射器,可通过它将事件传递给观察者
     * @throws Throwable
     */
    @Override
    public void subscribe(@NonNull FlowableEmitter<String> emitter) throws Throwable {
        //通过onNext()方法来传递事件(数据)
        emitter.onNext("aaa");
        emitter.onNext("bbb");
        emitter.onNext("ccc”);
        //调用onComplete(),意味着事件流发送已结束
        //后面再调用onNext()也不会再将事件发送出去
        emitter.onComplete();
    }
}, BackpressureStrategy.ERROR);

/**
* 2.创建观察者
*/
FlowableSubscriber<String> flowableSubscriber = new FlowableSubscriber<String>() {
    /**
     * 一旦订阅,会首先调用该方法
     * 传入的参数s是Subscription类型,对应的是"订阅"这个抽象概念
     * 通过调用Subscription.cancel()可以取消订阅,停止事件流发送和接收
     * @param s
     */
    @Override
    public void onSubscribe(@NonNull Subscription s) {

    }

    /**
     * 通过该方法将数据传递过来
     * @param s
     */
    @Override
    public void onNext(String s) {
        //.....处理数据.....
    }

    /**
     *
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值