【发布时间】:2018-10-08 22:29:45
【问题描述】:
我正在使用适用于 Android 的 RXBle 库。为了从 BLE 外围设备(BLE 设备)读取数据,我最终设置了多个订阅,所有订阅都在彼此之间,如下所示:
Disposable scanSubscription = null;
public void startScan() {
scanSubscription = rxBleClient
.scanBleDevices(settings, filter)
.take(1)
.subscribe(
scanResult -> connectDevice(scanResult.getBleDevice()),
throwable -> {}
);
}
public void connectDevice(RxBleDevice device) {
device
.establishConnection(false)
.subscribe(
connection -> requestMtu(connection),
throwable -> {}
);
}
public void requestMtu(final RxBleConnection connection) {
connection
.requestMtu(185)
.subscribe(
mtu -> readCharacteristic(connection),
throwable -> {}
);
}
public void readCharacteristic(final RxBleConnection connection) {
/* this one eventually scanSubscription.dispose!!!!! */
}
本质上,我有一系列对事物执行操作的函数,然后订阅生成的 Single(我认为我使用的术语正确)
我的问题是,有什么更好的写法?
更重要的是,我从未取消订阅的嵌套订阅会发生什么?请注意,在第一个函数中,我调用了一个 take(1)...最终我只是处置了调用所有这些的顶级一次性。
【问题讨论】:
标签: android android-bluetooth rx-android rxandroidble