Странное поведение Android на разных устройствах

У меня есть три устройства 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:

Почему даже при пинге экрана время такое? Кроме того, я знаю, что частота процессора уменьшается, когда экран гаснет, даже если вы держите блокировку пробуждения. Может ли такое поведение вызвать проблемы в коде службы, который обрабатывает соединения TCP?


person gst    schedule 08.07.2013    source источник


Ответы (1)


Производители хотят иметь возможность похвастаться самым долгим временем автономной работы. С этой целью они будут сокращать существующие функции до самой кости, чтобы обеспечить это время автономной работы.

И да, это может вызвать проблемы, и это действительно вызывает проблемы, но это одна из многих причин, по которой вы должны программировать с осторожностью. Другими словами, убедитесь, что ваше приложение готово к потере пакетов и возможным более длительным задержкам.

Надеюсь, ваши вопросы были не совсем риторическими, и вы действительно хотели получить ответ.

person Stephan Branczyk    schedule 08.07.2013
comment
Но это не отвечает на мой вопрос о том, почему это происходит? из-за изменения частоты процессора? (Или есть какая-то другая причина). Может ли частота ЦП вызывать некорректную работу кода сервера? - person gst; 08.07.2013
comment
Нет, частота ЦП не должна вызывать некорректную работу кода локального сервера. Опять же, я считаю, что это в основном проблема оптимизации экономии заряда батареи. Например, в случае уменьшения тактовой частоты ЦП при включении экрана я считаю, что мощность батареи, используемая для экрана, будет отведена от ЦП. - person Stephan Branczyk; 08.07.2013
comment
Если это из-за экономии заряда батареи, то почему время пинга всегда плохое, даже когда экран включен в устройствах HTC и Sony? Пинг связан с вводом-выводом и не потребляет ресурсы ЦП, но даже когда экран всегда включен, время пинга на устройствах Xperia и HTC очень велико! Это странно. Это может быть связано с режимом буферизации Wi-Fi, но этот режим не должен быть включен в обычных условиях и при включенном экране. В любом случае спасибо за ваш ответ. - person gst; 08.07.2013
comment
Энергию потребляет не только процессор, но и антенны. А для производителя один из самых простых способов повлиять на результирующее энергопотребление устройства — это возиться с количеством времени, в течение которого антенна включена, и частотой, с которой она обычно включается и выключается. - person Stephan Branczyk; 08.07.2013