Hi,
I'm using your lib to build an android app,
In my app, I start scanScan when application lifecycle is onStart and stopScan when application lifecycle is onStop as below.
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) =
when (event) {
Lifecycle.Event.ON_START -> {
Timber.d("onStateChanged onStart")
dependencies.bleLockModule.onStart()
}
Lifecycle.Event.ON_STOP -> {
Timber.d("onStateChanged onStop")
dependencies.bleLockModule.onStop()
}
else -> {
Timber.d("onStateChanged $event")
}
}
override fun startScan(scanAggressively: Boolean) {
if (scanCallback == null) {
val callback = BleScanCallBack(scope, _resultsFlow)
scanCallback = callback
runCatching {
scanner.startScan(emptyList(), buildScanSettings(scanAggressively), callback)
restartScanning()
Timber.d("BLE scan started")
}.onFailure {
Timber.e("Start scan failed: $it")
callback.onScanFailed(BleError.ScanErrorCode.Unknown.value)
}
}
}
override fun stopScan() {
scanCallback?.let {
scanner.stopScan(it)
Timber.d("BLE scan stop scanning")
scanCallback = null
} ?: Timber.d("Ignore stop scan due to callback null")
}
I found it working fine, but when app killed by task manager(recents tab), I see that I leaked the scan callback due to onStop not being called. after I tried to close/-reopen my app more that 32 times, android os throw error: "Unable to register GATT client, MAX client reached: 32"
so cloud you please share me the best practice to call stopScan when app is being killed by task manager
Hi,
I'm using your lib to build an android app,
In my app, I start scanScan when application lifecycle is onStart and stopScan when application lifecycle is onStop as below.
I found it working fine, but when app killed by task manager(recents tab), I see that I leaked the scan callback due to onStop not being called. after I tried to close/-reopen my app more that 32 times, android os throw error: "Unable to register GATT client, MAX client reached: 32"
so cloud you please share me the best practice to call stopScan when app is being killed by task manager