2010-11-17 87 views
0

我在寫一個小程序來定期輪詢WIFI連接的RSSI。 我在程序中使用SystemClock.Sleep(2000)Android的睡眠命令

這個問題,我想每2秒顯示一次RSSI。但是,目前,即使它每2秒輪詢一次,結果也只會在循環結束時顯示。

這裏是代碼片段:

for(int i=0;i<10;i++) 
     { 
      Date dt=new Date(); 
      WifiInfo info = wifi.getConnectionInfo(); 
      int rssi = info.getRssi(); 
      textStatus.append("\n\nRSSI :" +Integer.toString(rssi)); 
      SystemClock.sleep(2000); 
     } 

會很高興,如果你有一些建議。

問候 基蘭

回答

3

不要在UI線程中使用睡眠。

執行以下操作來代替:

  • 創建處理信息進行顯示(textStatus.append(...)
  • 創建運行你的循環包含睡眠工作線程的MessageHandler(android.os.Handler)
  • 現在工作線程不能直接更新textStatus。而是從工作線程向消息處理程序發送消息。

新增:

這裏是一個有用的鏈接,可以幫助你:

參見 「在UI線程處理昂貴的操作」

http://developer.android.com/guide/appendix/faq/commontasks.html#threading

+0

非常感謝..我會試試這個.. – Kiran 2010-11-17 11:39:11

+0

@Kiran:查看我在我的回答中添加的鏈接 – Curd 2010-11-19 08:41:47

0
  • 嘗試使用你是在一個單獨的線程做的東西,
  • 來看,它不斷,直到你需要,
  • 讓它睡了2秒,做你的東西,
  • 更新從它的主線程,
  • 循環這個過程



希望這將有助於一點。