Я работаю с библиотекой RXBle для Android.Для чтения с периферийного устройства 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!!!!! */
}
По сути, у меня есть ряд функций, которые выполняютдействие на вещь, а затем подписаться на полученный сингл (я думаю, что я правильно использую терминологию)
Мой вопрос: как лучше написать это?
Еще большеважно, что происходит с вложенными подписками, от которых я никогда не отписываюсь?Обратите внимание, что в первой функции я вызываю take (1) ... в конце концов, я просто располагаю одноразовым объектом верхнего уровня, который вызывает все это.