У меня есть три устройства Android: Samsung Galaxy Note 10, HTC Desire C и Sony Xperia E. Кроме того, у меня есть служба, которая прослушивает определенный порт TCP на этих устройствах. Для политики WIFI установлено значение «Всегда включено на всех моих устройствах». Моя служба получает WIFI_MODE_FULL и PARTIAL_WAKE_LOCK, поэтому ЦП и WIFI всегда есть. Через какое-то время, когда я хочу подключиться к этим устройствам со своего сервера, происходит что-то нехорошее.
- Устройство Samsung Galaxy Note всегда ведет себя корректно
- HTC Desire становится недоступным
- Sony становится недоступной
Я пропинговал эти устройства, чтобы увидеть, есть они или нет. Результаты:
- Устройство Samsung всегда отвечает на пинг-запросы сразу и нормально
- Устройства HTC и Sony иногда недоступны, а иногда отвечают. Однако они отвечают с очень большой задержкой, даже когда их экран включен (временной столбец пинга иногда составляет около 5000 мс).
Я знаю, что есть некоторые проблемы с политикой WIFI:
- https://code.google.com/p/android/issues/detail?id=9781
- https://code.google.com/p/android/issues/detail?id=6611
Почему даже при пинге экрана время такое? Кроме того, я знаю, что частота процессора уменьшается, когда экран гаснет, даже если вы держите блокировку пробуждения. Может ли такое поведение вызвать проблемы в коде службы, который обрабатывает соединения TCP?