亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免調用 handler.postDelayed(Runnable run) ?

如何避免調用 handler.postDelayed(Runnable run) ?

慕森王 2023-10-13 10:35:30
我有這種方法來掃描藍牙 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否則我會調用它兩次。如何避免第二次致電?
查看完整描述

3 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

嘗試刪除回調:

handler.removeCallbacksAndMessages(null);


查看完整回答
反對 回復 2023-10-13
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

Handler handler = new Handler();


Runnable runnableRunner = new Runnable() {

    @Override

    public void run() {

        btScanner.stopScan(leScanCallback);

    }

 }


public void startScanning() {

  final long SCAN_PERIOD = 10000;

  handler.postDelayed(runnableRunner, SCAN_PERIOD);

  btScanner.startScan(leScanCallback);

}

使用removeCallbacks刪除消息隊列中Runnable r的任何掛起的帖子。


// cancel runnable whenever your condition is met.

handler.removeCallbacks(runnableRunner);

或用于刪除所有消息和回調


handler.removeCallbacksAndMessages(null);


查看完整回答
反對 回復 2023-10-13
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

關于這個問題我還有另一個問題。我在代碼的“順序”部分中有一個方法,而不是在異步部分中,只有在調用該方法或在過期之后m()才需要調用該方法。我如何檢查這些條件并基本上等待這兩種情況之一發生?我需要放入同步嗎?(現在我也有了可以使用的全局)handler.removeCallbacksAndMessages(null);SCAN_PERIODm()runhandler



查看完整回答
反對 回復 2023-10-13
  • 3 回答
  • 0 關注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號