Take notes for RxJava2

首先了解 响应式编程 和 观察者模式

响应式编程

响应式编程是一种面向数据流、通过异步的方式来构建事务关系的编程模型。

不同于命令式编程环境中,a=b+c表示将表达式的结果赋给a,而之后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。

Excel就是响应式编程的一个例子。单元格可以包含字面值或类似"=B1+C1"的函数,而包含公式的单元格的值会依据其他单元格的值的变化而变化。

“事务的关系”是响应式编程的核心理念

这种关系不是类的依赖关系,而是业务逻辑上的关系。比如APP初始化中,SDK初始化,数据库初始化,登陆接口,他们共同被跳转页面业务所依赖。但是他们三个本身并没有关联。这也只是业务之间较为简单的关系,实际上,根据我们的需求App端会产生出许多业务之间错综复杂的关系。

“数据流”和“异步”是实现这个核心理念的关键。

Gradle

implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'

implementation 'io.reactivex.rxjava2:rxjava:2.0.7'

与RxJava1的区别

1 RxJava2x 不再支持 null 值,如果传入一个null会抛出 NullPointerException

2  Observable.just(null)(不支持)

 3 RxJava2 所有的函数接口(Function/Action/Consumer)均设计为可抛出Exception,

自己去解决编译异常需要转换问题。

4 RxJava1 中Observable不能很好支持背压,在RxJava2 中将Oberservable实现成不支持背压,而新增Flowable 来支持背压。

操作符

create

observable是被观察者,observer是观察者,拆分订阅


不拆分

just


fromArray


just (2个参数 ) fromArray (多个参数)

empty


区分使用Observable与Flowable

Observable    一般处理<=1000条数据,并且几乎不会出现内存溢出

如鼠标事件(click),频率不超过1000 Hz,基本上不会背压;

Flowable    处理以某种方式产生>10K的元素;文件读取与分析,

如读取指定行数的请求;

网络IO流;

有很多的阻塞() 或 基于拉取的数据源,但是又想得到一个响应式非阻塞接口的。


BackpressureSrategy被压策略

BackpressureStrategy参数的含义

BackpressureStrategy.ERROR:若上游发送事件速度超出下游处理事件能力,且事件缓存池已满,则抛出异常

//阻塞时队列

BackpressureStrategy.BUFFER:若上游发送事件速度超出下游处理能力,则把事件存储起来等待下游处理

BackpressureStrategy.DROP:若上游发送事件速度超出下游处理能力,事件缓存池满了后将之后发送的事件丢弃

BackpressureStrategy.LATEST:若上有发送时间速度超出下游处理能力,则只存储最新的128个事件

只会处理500条
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,540评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,975评论 2 59
  • 1)写时间日志,记录每个时间段都在说什么 2)分析时间日志,可以统计一天或一周时间占比 3)计算个人效率比,提升自...
    大喵源滚滚阅读 220评论 0 0
  • 你学习一般,考上了现在的这所学校,成绩不算好,拿不到奖学金,上课不听讲,上自习不规律,考试靠突击,同学帮一把的话也...
    太阳尚远i阅读 333评论 9 16
  • 这世界有时太吵, 我不明白什么青春时期少男少女的相互欢喜, 却被视为洪水猛兽的无可救药? 我不明白为什么有爸爸妈妈...
    阳光灿烂和佩奇阅读 251评论 0 1