【问题标题】:Sleep command for AndroidAndroid 的睡眠命令
【发布时间】:2023-03-09 02:27:01
【问题描述】:

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

问题,我想每 2 秒显示一次 RSSI。但是,目前,即使它每 2 秒轮询一次,结果也只会在循环结束时显示。

这里是sn-p的代码:

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);
        }

如果您有什么建议,我们会很高兴。

问候 基兰

【问题讨论】:

    标签: android android-emulator rssi wifimanager


    【解决方案1】:

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

    改为执行以下操作:

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

    添加:

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

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

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

    【讨论】:

    • @Kiran:查看我在答案中添加的链接
    【解决方案2】:
    • 尝试在单独的线程中使用您正在执行的操作,
    • 持续运行直到你需要,
    • 让它休眠 2 秒,做你的事情,
    • 从中更新主线程,
    • 循环这个过程



    希望这会有所帮助。

    【讨论】: