java - 如何避免调用 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
否则我会调用它两次。如何避免第二次通话?
解决方案
尝试删除回调:
handler.removeCallbacksAndMessages(null);
推荐阅读
- authentication - Using ambassador authservice to only require basic auth on some routes/urls (or services)
- antlr4 - how to use sequence for tokenazation but not returned as par of result
- objective-c - Why did Apple design __block for write auto var in block?
- scala - Scala:具有不同上下文和依赖关系的 ReaderT 组合
- javascript - 调用异步函数 main 的正确方法?
- ethereum - 功能的气体估计:无限
- tfs - 如何将测试计划(或测试用例)从一个 VSTS 迁移到另一个 VSTS?
- node.js - 运行 NPM 给出 SyntaxError: Unexpected Identifier
- java - Why is reading a JDBC ResultSet by position faster than by name and how much faster?
- r - Error in Running R Shiny App: Operation not allowed without an active reactive context