首页 > 解决方案 > 如何避免调用 handler.postDelayed(Runnable run)?

问题描述

我有这种方法来扫描蓝牙 LE 设备。扫描仪异步运行 10 秒,然后中断。

 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);
}

但是,根据扫描期间验证的条件(例如,我找到了我正在寻找的设备等),我调用btScanner.stopScan(leScanCallback). 所以我不想调用 stopScan ,SCAN_PERIOD否则我会调用它两次。如何避免第二次通话?

标签: javaandroid-studioasynchronousbluetooth-lowenergypostdelayed

解决方案


尝试删除回调:

handler.removeCallbacksAndMessages(null);

推荐阅读