• Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】


    先简单说说RxJava的用途与价值

    原文出处:Android RxJava 2 的用法

    用途: 异步 (也就是开线程跳转) 

    价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读

    RxJava2 与 RxJava 最大的不一样的地方,就是 Flowable ,这个 Flowable 取代了Rxjava 中的

    简单的使用:

    下面展示一段代码:

    Flowable
            .fromArray(weeks)
            .map(new Function<String, String>() {
                @Override
                public String apply(String s) throws Exception {
                    print("fromFlowable map s = " + s);
                    return "111";
                }
            })
            .flatMap(new Function<String, Flowable<String>>() {
                @Override
                public Flowable<String> apply(String s) throws Exception {
                    print("fromFlowable flatMap s = " + s);
                    String[] strs = new String[]{"222", "333", "444"};
                    return Flowable.fromArray(strs);
                }
            })
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    print("fromFlowable subscribe s = " + s);
                }
            });
    Flowable
            .just("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天")
            .subscribe(new Consumer<String>() {
                @Override
                public void accept(String s) throws Exception {
                    print("jsutFlowable subscribe s = " + s);
                }
            });

    这就是RxJava2 的最简单的使用了.

    fromArray方法:

    传入一个 数组 参数 .将参数注入到 Flowable 中 .
    没了.仅仅传个数组进去而已.

    just方法:

    传入 若干个相同 的参数,将参数注入到 Flowable 中 .
    没了.仅仅传入1个或者多个参数进去而已.
    fromArray() 的作用的一样的. 传参数 !!!

    map方法:

    map()方法,也很好理解.
    1. Flowable 传完参数之后
    2. 接着调用 map()
    3. map()的回调中,能直接拿到传进来的参数,并且需要返回一个返回值.待程序后续操作使用.
    4. 参数可以随意操作转换, 参数返回值类型.由 Function泛型控制
    5. Function 泛型的第一个传进来的参数 , 第二个是 返回值的类型

    它的价值:
    主要还是为了处理数据.处理完之后 发射 给下一级

    flatMap方法:

    flatMap()map() 的作用用法全部一样.
    唯一的区别,就在于返回值类型.
    flatMap 返回去的又是一个 Flowable
    实际上是 Publisher ,因为 FlowablePublisher实现类 ,所以目前假装返回的是 Flowable 类型

    它的价值:
    个人认为,就是少写一个循环.因为往往用flatMap,返回去的Flowable , 都是用fromArray() 构造出来的对象.意义就是少写个for 循环.

    subscribe方法:

    subscribe()方法是传一个Consumer对象进去.这个对象官方的说法是 被观察者 . 个人理解为是一串 异步 操作之后,进行 回显UI 的一个操作.
    accept方法里面写回显UI的代码.

    subscribeOn方法:

    subscribeOn()传入的是一个 Scheduler 对象,这个对象用来指定. 一系列操作在哪个线程执行
    一般传入子线程都可以.

    observeOn方法:

    observeOn() 传入的 也是一个 Scheduler对象,作用于subscribeOn一样,用来指定线程.
    只不过,它们的区别是:
    subscribeOn() 指定的是一系列操作在哪个线程执行
    observeOn() 指定的是 subscribe 的回调 在哪个线程执行.
    一般就是 subscribeOn() 子线程执行 observeOn() 主线程执行

    外来资料简单展示:

    1. Observable是数据的发射者,它会对外发射数据,然后经过map、flatmap**等等数据处理后,最终传递给**Observer,这个数据接收者。因此,抛开中间数据处理不管,可以看出,Observable对外发射数据,是数据流的开端;Observer接收数据,是数据流的末端

  • 相关阅读:
    MySQL(一)序
    Mockito 小结
    如何入门一个开源软件
    面经
    琐碎的想法(四)键盘布局、快捷键的由来
    琐碎的想法(二)网络协议——人们给计算机的一组“约定”
    Java源码赏析(六)Class<T> 类
    Java随谈(五)Java常见的语法糖
    Java随谈(四)JDK对并发的支持
    Event Loop和宏任务微任务
  • 原文地址:https://www.cnblogs.com/jooy/p/8927043.html
Copyright © 2020-2023  润新知