javaandroid-studioasynchronousbluetooth-lowenergypostdelayed

How do I avoid a handler.postDelayed(Runnable run) from being called?


I have this method to scan Bluetooth LE devices. The scanner runs asynchronously for 10s and then it is interrupted.

 public void startScanning() {
    Handler handler = new Handler();

    final long SCAN_PERIOD = 10000;
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            btScanner.stopScan(leScanCallback);
        }
    }, SCAN_PERIOD);
    btScanner.startScan(leScanCallback);
}

However, depending on a condition that is verified during the scan (for example, I find a device I was looking for, etc.), I call btScanner.stopScan(leScanCallback). So I don't want to call the stopScan after SCAN_PERIOD otherwise I'd call it twice. How do I avoid the second call?


Solution

  • Try to remove call back:

    handler.removeCallbacksAndMessages(null);