Using many write operations in RxAndroidBle creates a lot of disposables

64 Views Asked by At

I have the following code using an. RxAndroidBle Bluetooth Low Energy Connection:


private val connectionDisposable = CompositeDisposable()

private fun writeBle(writeCharacteristicUuid: UUID, command: ByteArray)
if (bleDevice.connectionState == RxBleConnection.RxBleConnectionState.CONNECTED) {

            activeConnection
                .flatMapSingle {
                    it.writeCharacteristic(writeCharacteristicUuid, command)
                }
                .subscribe({
                    Log.d(
                        TAG,
                        "${connectionDisposable.size()} - Command successful: ${it.toHexString()}"
                    )
                })
                { Log.e(TAG, "Error executing command: $it") }
                .let { connectionDisposable.add(it) }
        } else {
            Log.e(TAG, "You are not connected")
        }
}

The connectionDisposable is .clear()ed when the connection to the device is closed. But until then several hundreds, thousands or more disposable will land in the connectionDisposable.

I am not completely clear if this presents a Problem in regard to memory usage, or whether I am missing the right way to execute a lot of write commands (that should not be send simultaneously to the device).

0

There are 0 best solutions below