Android RxJava:一文带你全面了解 背压策略
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 Rxjava ,由于其 基于事件流的链式调用、逻辑简洁 & 使用简单 的特点,深受各大 Android 开发者的欢迎。 本文主要讲解的是 RxJava 中的 背压控制策略 ,希望你们会喜欢。 目录 1. 引言 1.1 背景 观察者 & 被观察者 之间存在2种订阅关系:同步 & 异步。具体如下: 对于异步订阅关系,存在 被观察者发送事件速度 与观察者接收事件速度 不匹配的情况 1.2 问题 被观察者 发送事件速度太快,而观察者 来不及接收所有事件,从而导致 观察者无法及时响应 / 处理所有发送过来事件的问题,最终导致缓存区溢出、事件丢失 & OOM 下面再举个例子: 被观察者的发送事件速度 = 10ms / 个 观察者的接收事件速度 = 5s / 个 即出现发送 & 接收事件严重不匹配的问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 结果 由于被观察者发送事件速度 > 观察者接收事件速度,所以出现流速不匹配问题,从而导致 OOM 1.3 解决方案 采用 背压策略。 下面