2010-11-17 89 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秒,做你的东西,
  • 更新从它的主线程,
  • 循环这个过程



希望这将有助于一点。