适用于Android的睡眠命令

时间:2010-11-17 10:45:34

标签: android android-emulator rssi wifimanager

我正在编写一个小程序来定期轮询WSII连接的RSSI。 我在程序中使用SystemClock.Sleep(2000)

问题是,我想每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);
        }

如果你有一些建议,会很高兴。

此致 基兰

2 个答案:

答案 0 :(得分:3)

不要在UI线程中使用sleep。

请执行以下操作:

  • 创建一个MessageHandler(android.os.Handler)来处理要显示的消息(textStatus.append(...)
  • 创建一个运行包含sleep
  • 的循环的工作线程
  • 现在工作线程无法直接更新textStatus。而是从工作线程向消息处理程序发送消息。

<强>增加:

这是一个可能对您有用的有用链接:

请参阅“在UI线程中处理昂贵的操作”一节

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

答案 1 :(得分:0)

  • 尝试在一个单独的线程中使用你正在做的东西,
  • 连续运行直到你需要,
  • 让它睡2秒,做你的东西,
  • 从中更新主线程,
  • 循环此过程
希望这会有所帮助。