2011-05-24 129 views
1

我正在開發這個應用程序,我做了可達的接入點掃描。我不得不在第二秒後才做這樣的事情。 我開始用一個普通的timerTask來完成它,但它不能很好地工作,因爲它創建新的線程很慢。於是,我開始使用handler類Android和調用postDelayed方法來安排掃描就像這樣:定時器廣播接收器android

protected void setTimer() 
    { 
     final long elapse = 100; 
     Runnable t = new Runnable() { 
      public void run() 
      { 

     Log.i(TAG3, "startedScan"); 
     IntentFilter filter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
     registerReceiver(wifiReceiver, filter); 

     wifiManager.startScan(); 

       if(!isComplete) 
       { 
        mHandler.postDelayed(this, elapse); 
       } 
      } 
     }; 
     mHandler.postDelayed(t, elapse); 
    } 

的問題是,掃描只運行3次,然後就再也沒有runns ..我找不到解決方案!我該如何解決這個問題?

回答

2

我猜isComplete設置爲true,所以Runnable不會被重新調度。我建議將Runnable移出該方法,然後將該重新計劃添加到wifiReceiver的s onReceive方法中。

Runnable t = new Runnable() { 
    public void run() 
    { 
     Log.i(TAG3, "startedScan"); 
     IntentFilter filter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
     registerReceiver(wifiReceiver, filter); 
     wifiManager.startScan(); 
    } 
}; 

protected void setTimer() 
{ 
    final long elapse = 100; 
    mHandler.postDelayed(t, elapse); 
} 
+0

現在工作正常!非常感謝Femi .. – Mark 2011-05-24 04:19:36