Android的AsyncTask网络任务导致延迟变化很大

时间:2014-09-17 21:42:33

标签: android performance android-asynctask udp latency

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

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

从Device1发送“ping”的那一刻开始计算时间,直到收到“pong”。如果按下按钮多次,每个乒乓的延迟会急剧下降到2-5ms,但第一次乒乓可能会有60-350ms之间的延迟。如果按钮未按下一段时间然后再按下,则典型的延迟也在60-350ms之间。

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

提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

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