Android的Sleep命令
我正在编写一个小程序,定期轮询WIFI连接的RSSI。 我正在程序中使用Android的Sleep命令,android,android-emulator,rssi,wifimanager,Android,Android Emulator,Rssi,Wifimanager,我正在编写一个小程序,定期轮询WIFI连接的RSSI。 我正在程序中使用SystemClock.Sleep(2000) 问题是,我想每2秒显示一次RSSI。但是,目前,即使它每2秒进行一次轮询,结果也仅在循环结束时显示 以下是代码片段: for(int i=0;i<10;i++) { Date dt=new Date(); WifiInfo info = wifi.getConnectionInfo();
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);
}
对于(int i=0;i- 尝试在单独的线程中使用您正在做的事情,
- 连续运行它,直到您需要,
- 让它休眠2秒,做您的事情,
- 从它更新主线程,
- 循环此过程
希望这会有所帮助。- 尝试在一个单独的线程中使用你正在做的事情,
- 连续运行它,直到你需要,
- 让它休眠2秒,做你的事情,
- 从它更新主线程,
- 循环这个过程
希望这会有所帮助。不要在UI线程中使用睡眠
请改为执行以下操作:
- 创建一个MessageHandler(android.os.Handler)来处理要显示的消息(
textStatus.append(…)
)
- 创建一个运行包含睡眠的循环的工作线程
- 现在,工作线程无法直接更新textStatus。而是将一条消息从工作线程发送到消息处理程序
添加:
以下是一个有用的链接,可以帮助您:
请参阅“在UI线程中处理昂贵的操作”一节
不要在UI线程中使用睡眠
请改为执行以下操作:
- 创建一个MessageHandler(android.os.Handler)来处理要显示的消息(
textStatus.append(…)
)
- 创建一个运行包含睡眠的循环的工作线程
- 现在,工作线程无法直接更新textStatus。而是将一条消息从工作线程发送到消息处理程序
添加:
以下是一个有用的链接,可以帮助您:
请参阅“在UI线程中处理昂贵的操作”一节
@Kiran:请看我在我的博客中添加的链接answer@Kiran:查看我在回答中添加的链接