【问题标题】:Network tasks with Android's AsyncTask result in very varying latencies使用 Android 的 AsyncTask 的网络任务会导致非常不同的延迟
【发布时间】:2014-11-12 02:16:30
【问题描述】:

我正在开发一个小型且非常简单的应用程序,其中一台 Android 设备通过网络向另一台 Android 设备发送一条小消息。 Android 不会让我在主线程上做网络任务,所以我使用了 AsyncTask。功能如下:

当在 Device1 上按下按钮时,会创建并执行 AsyncTask。 ASyncTask 使用 UDP 向 Device2 发送“ping”消息。 Device2 在 while(true) 循环中运行,一旦它收到“ping”消息,它就会发送一个“pong”。 Device1 正在等待这个“pong”消息。

时间是从 Device1 发送“ping”到收到“pong”的那一刻。如果多次按下按钮,每次乒乓球的延迟会急剧下降到 2-5 毫秒,但第一次乒乓球的延迟可能会在 60-350 毫秒之间变化。如果按钮一段时间没有按下然后再次按下,典型的延迟也在 60-350ms 之间。

有没有人可以解释这种行为?有没有办法始终实现低延迟(~5ms)?

提前谢谢大家!

【问题讨论】:

    标签: android performance android-asynctask udp latency


    【解决方案1】:

    Android 似乎在没有流量时会关闭 WiFi - 请参阅此处的分析和解决方案:Force android to send UDP packets immediately?。基本上,你需要时不时地发送一个保持活动的数据包(比如 100 毫秒)。

    【讨论】:

    • 非常感谢。这确实是问题所在,但我想我自己永远不会找到它......谢谢!
    • 没问题,如果你能接受这个答案,那就太好了:)
    • 这样可以吗?对不起,我是这个网站的新手 :)
    猜你喜欢
    • 2021-08-22
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多