0

我正在编写一个小程序来定期轮询 WIFI 连接的 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);
        }

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

问候基兰

4

2 回答 2

3

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

请改为执行以下操作:

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

添加:

这是一个有用的链接,可能会对您有所帮助:

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

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

于 2010-11-17T10:56:48.627 回答
0
  • 尝试在单独的线程中使用你正在做的事情,
  • 连续运行它直到你需要,
  • 让它睡 2 秒,做你的事情,
  • 从中更新主线程,
  • 循环这个过程



希望这会有所帮助。

于 2010-11-17T10:54:19.957 回答