2016-10-22 173 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 –