我有三台安卓设备:三星 Galaxy Note 10、HTC Desire C 和索尼 Xperia E。此外,我还有一个服务可以监听这些设备上的特定 TCP 端口。我所有设备的 WIFI 策略都设置为“始终开启”。我的服务获取了一个 WIFI_MODE_FULL 和一个 PARTIAL_WAKE_LOCK,所以 CPU 和 WIFI 总是在那里。一段时间后,当我想从我的服务器连接到这些设备时,发生了一些不好的事情。
- 三星 Galaxy Note 设备始终运行正常
- HTC Desire 变得无法访问
- 索尼变得遥不可及
我对这些设备进行了 Ping,以查看它们是否存在。结果是:
- 三星设备总是立即正常响应 ping 请求
- HTC 和索尼设备有时无法访问,有时它们会响应。但是,即使屏幕打开,它们也会以很长的延迟响应(ping 的时间列有时约为 5000 毫秒)
我知道WIFI政策存在一些问题:
- https://code.google.com/p/android/issues/detail?id=9781
- https://code.google.com/p/android/issues/detail?id=6611
为什么即使在屏幕上ping时间也是这样?此外,我知道即使您持有唤醒锁,屏幕关闭时 CPU 时钟也会降低。这种行为会导致处理 TCP 连接的服务代码出现问题吗?