最近开始学习RxJava 主要看 RxJava2 水管教程 觉得这个老哥说的很通俗易懂 于是趁闲暇之余 把学到的一点点知识大概总结一下 存着以后不懂的再看 不会写博客 就随便记一下 等以后忘了 再回忆
引入RxJava库 版本号去github查 RxJava Github
1:RxJava是上游发送事件 下游接收事件的 具体流程引用水管教程的图
2:上游可以发送无数个OnNext方法 下游也可以接受无数个 但是 当上游发送了一个OnComplete后 下游就不会继续接收了
比如下面的这个 下游只会收到 1 2 3 和 OnComplete 虽然 上游还会继续发送 4 但是 下游并不会继续接收
(OnError 后 上游也是会 继续发送 但下游不会继续接收 OnComplete 和 OnError必须唯一 并且互斥 )
代码图3:RxJava 如何切换线程?
subscribeOn() 和 observeOn() 前者是 设置上游线程 后者则是下游的线程
tips: Rxjava 可以多次设置上下游的线程 但是 上游 只有第一次设置 才是有效线程 而下游 每调用一次 都会切换一次
切换线程 Rxjava默认线程池4:Map 操作符 将上游的操作类型 转成其他类型
map的类型5:flatMap 和 concatMap 都是将上游多个事件变换成一个事件 发送至下游 两个唯一的区别就是 flatMap是无序的 而concatMap 是严格按照上游事件顺序
6:ZIP :打包合并多条请求 每个事件只能合并一次 下游收到的消息数量 为 上游事件中 最少那条管道的 数量
即:以下代码 最终只会打出 两条 分别为:2 和 4
具体操作
网友评论