2016-10-22 219 views
-2

我想搜索藍牙設備每三秒鐘。 所以,我用這個Timer。爲什麼「DISCOVERY_FINISHED」消息打印兩次?

public void SearchingDevice() { 
    m_BTAdapter.startDiscovery(); 

    m_timer = new Timer(true);    
    TimerTask timerTask = new TimerTask() { 
     public void run() { 
      m_BTAdapter.cancelDiscovery(); 
      m_BTAdapter.startDiscovery(); 
     } 
    }; 
    m_timer.schedule(timerTask, 3000, 3000); 
} 

順便提一句,「android.bluetooth.adapter.action.DISCOVERY_FINISHED」消息 總是打印兩次.....爲什麼此消息打印兩次?? 我用cancelDiscovery()只有一次... 請別人幫我..! 謝謝。

回答

0

你應該小心計時器任務。也許問題在於你不用activityLifecycle取消任務,每次創建一個新任務。 嘗試:

@Override 
protected void onPause() { 
    super.onPause(); 
    m_timer.cancel(); 
} 

可以粘貼在一塊,你叫SearchingDevice()方法的代碼?

+0

謝謝你的回答。 :) –

+0

但是..我不能粘貼這段代碼.. 發生錯誤 –

+0

太棒了!它解決了嗎?標記爲答案:D –