美文网首页
RxJava-入门实战1

RxJava-入门实战1

作者: Laughing_G | 来源:发表于2019-10-04 15:26 被阅读0次

一、RxJava入门资料

借鉴来源:
https://www.jianshu.com/p/a51aa39c30ab

1.1RxJava定义:

RxJava是一个基于事件流、实现异步操作的库。

1.2RxJava作用:

实现异步操作

类似于Android中的AsyncTask、Handler作用

1.3RxJava特点:

由于RxJava的使用方式是:基于事件流的链式调用,所以使得RxJava:

  • 逻辑简洁
  • 使用优雅
  • 使用简单
    更重要的是,随着程序逻辑的复杂性提高,它依然能够保持简介&优雅。

二、RxJava原理

2.1生活例子引入:

我用一个生活例子引入&讲解RxJava原理:顾客到饭店吃饭:


示意图
流程图

2.2RxJava原理基于一种扩展的观察者模式:

角色 作用 类比
被观察者(Observalbe) 产生事件 顾客
观察者(Observer) 接收事件,并给出响应动作 厨房
订阅(Subscribe) 连接被观察者&观察者 服务员
事件(Event) 被观察者&观察者沟通的载体 菜式

2.3具体原理

  • 结合上述顾客到饭店吃饭的生活例子理解:


    示意图
    流程图

即RxJava原理可总结为:被观察者(Observable)通过订阅(Subscribe)按顺序发送事件给观察者(Observer),观察者(Observer)按顺序接收事件&作出对应的相应动作,具体如下图:


示意图

至此:RxJava原理讲解完毕。

三、RxJava基本使用:

RxJava的使用方式有两种:

  • 1.分步骤实现:该方法主要为了深入说明RxJava的原理&使用;
  • 2.基于事件流的链式调用。

3.1方式1:分步骤实现

3.1.1使用步骤

示意图

3.1.2步骤详解

步骤1:创建被观察者(Observable)&生产事件

  • 即顾客入饭店 - 坐下餐桌 - 点菜
  • 具体实现
//1.每1s发送一个数据,从0开始,递增1,
        Observable.interval(1, TimeUnit.SECONDS)
                //2.通过takeUnit的Predicate传入判断条件
                .takeUntil(new Predicate<Long>() {
                    @Override
                    public boolean test(Long aLong) throws Exception {
                        //返回true时,就停止发送事件
                        return (aLong > 3);
                    }
                }).subscribe(new Observer<Long>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Long aLong) {
                Log.d(TAG, "onNext: 发送了事件 " + aLong);
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });

步骤二:创建观察者(Observer)并定义响应事件的行为

  • 即 厨房 -确定对应菜式
  • 发生事件类型包括:next事件、Complete事件、Error事件,具体如下:


    示意图

步骤三:通过订阅(Subscribe)连接观察者和被观察者

Obervable.subscribe(Observer);

demo下载地址:
https://github.com/cWX411904/RxJavaDemo

相关文章

网友评论

      本文标题:RxJava-入门实战1

      本文链接:https://www.haomeiwen.com/subject/zhkzectx.html