android room 返回rxjava2 Flowable类型数据的时候,应该注意的点

本文详细解析了Android Room库与RxJava结合使用时的流式数据更新机制,重点介绍了Room 2.2.0-alpha02版本中RxRoom.createFlowable方法的改进,包括操作符和调度器的更新,以及对事务线程和查询线程的优化。

android.arch.persistence.room:runtime:1.1.1 版本

room 用gradle 插件生成的 impl 类,根据注解 生成具体的 实现方法

在这里插入图片描述
return RxRoom.createFlowable

在这里插入图片描述

返回的 Flowable 已经调用了 observerOn操作符 ,所以再调用 subscribeOn 操作符没有用了

不能返回 observable 类型的数据,gradle 插件不支持

androidx.room:room-runtime:2.2.0-alpha02版本

RxRoom.createFlowable 方法有改动

在这里插入图片描述

改动点 1.操作符 2.scheduler

1.使用了 subscribeOn , unsubscribeOn ,observeOn 三个操作符

unsubscribeOn 操作符 从源码来看 ,具体实现类 是FlowableUnsubscribeOn

在这里插入图片描述

对应的 subscriber 如图为 UnsubscribeSubscriber

在这里插入图片描述
UnsubscribeSubscriber 的cancel 方法,让 上游的操作符 cancel方法在指定 线程执行

在这里插入图片描述

可以配合 doOnCancel 操作符使用 ,cancel 的时候在指定线程工作

2.scheduler 有改动 分为了 事务线程 和 查询线程

具体实现 需要看源码,大概是 事务线程加了排队机制 ,查询线程还是在子线程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值