kotlin - RxJava observables 之间的动态切换
问题描述
我有两个 observables:一个发出从蓝牙连接接收到的 ByteArrays,另一个发出周期性服务器请求的结果。
fun observeBluetooth():Observable<ByteArray>
fun observeServer():Observable<ByteArray>
蓝牙连接状态可用(作为布尔变量或 Observable)
我需要考虑以下要求来组合观察值:
- 如果蓝牙已连接,则必须发出从 observeBluetooth() 接收的数据(并且不得发出服务器请求)
- 如果蓝牙未连接,则必须发出从 observeServer() 接收的数据
- 如果蓝牙连接恢复,则必须再次发出从 observeBluetooth() 接收到的数据
如何使用 RxJava/Kotlin 做到这一点?
解决方案
如果你有一个 observable isBtConnected
,你可以切换它:
val isBtConnected: Observable<Boolean> = ...
isBtConnected.switchMap {
if (it) observeBluetooth()
else observeServer()
}
推荐阅读
- excel - 用合并和未合并的单元格换行工作表的文本
- html - How to implement an app layout with header + scrollable sidebar + scrollable content using CSS and HTML only
- java - how do i run cmd command on android programmatically with java code
- algorithm - Vector insertion in Binary Search Tree in linear time complexity
- c++ - O(n) 和 O(log n) 时间的三次根算法
- c - 安装 MSYS(2) 后如何简单地使用纯 Mingw GCC?
- bash - bash中命令的执行顺序是什么?
- java - 使用 ASyncTask 时数组未显示在 ArrayAdapter 中
- python - 在多级数据框中选择特定的索引单元格值
- java - 当我的数据包含0x0a和0x0d时,如何从android中的BLE读取全长数据?