Rxjava简单笔记(2019-03-08)

Rxjava

参考:https://www.jianshu.com/p/061f23ecc19a

关键词:异步数据流 背压(控制流速) 观察者模式

  • 原理:创建一个Observable来完成异步任务,组合使用各种不同的链式操作,来实现各种复杂的操作,最终将任务的执行结果发射给Observer进行处理。

  • 用途:

    1. 简化异步程序的流程
    2. 使用近似于Java8的流的操作进行编程:因为想要在Android中使用Java8的流编程有诸多的限制,所以我们可以使用RxJava来实现这个目的。(链式操作)
  • 依赖:

    compile 'io.reactivex.rxjava2:rxjava:2.2.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.2'
    
  • 三部曲

    1. 初始化Observable
    2. 初始化Observer
    3. 建立订阅关系
  • 操作符

    • map:将一个 Observable 对象通过某种关系转换为另一个Observable 对象

    • flatmap:flatMap 操作符可以将一个发射数据的 Observable 变换为多个 Observables ,然后将它们发射的数据合并后放到一个单独的 Observable

      一个数据(菜单列表)-----多个(菜的详情)-----一个(所有菜的详情的集合)

    • concat:concat 可以做到不交错的发射两个甚至多个 Observable 的发射事件,并且只有前一个 Observable 终止(onComplete) 后才会订阅下一个 Observable

      利用 concat 的必须调用 onComplete 后才能订阅下一个 Observable 的特性,我们就可以先读取缓存数据,倘若获取到的缓存数据不是我们想要的,再调用 onComplete()以执行获取网络数据的 Observable,如果缓存数据能应我们所需,则直接调用 onNext(),防止过度的网络请求,浪费用户的流量。

    • zip:操作符可以将多个 Observable 的数据结合为一个数据源再发射出去

    • interval:轮训(间隔任务)

你可能感兴趣的:(Rxjava简单笔记(2019-03-08))