Когда экран выключен, устройства Android обычно выключают процессор и переходят в состояние глубокой гибернации, если какое-либо приложение не держит wakelock. Система only wakes up от этого состояния при прерываниях устройства (например, входящих данных из сети) или при срабатывании планового аварийного сигнала. Это, похоже, сильно отличается от состояния ожидания процессора, где периодические прерывания таймера регулярно запускают CPU.Android и SO_KEEPALIVE - будет ли спальное устройство по-прежнему отправлять сегменты keepalive?
Означает ли это, что все сетевые события/таймеры также приостановлены (например, повторные передачи TCP и keepalives) или они зарегистрированы в качестве сигналов тревоги в ядре?
Мне интересно, может ли это помешать работе keepalives на уровне сокета (через опцию сокета SO_KEEPALIVE). Будет ли этот вариант по-прежнему работать на устройстве Android, или это должно быть обработано приложением на более высоком уровне?
Что касается гнезд keepalives: Нет: если трубка ложится спать, остановки остаются. Но в связи с более широким вопросом: «Как я могу поддерживать долговременное соединение»: вот несколько хороших стратегий: [Как заставить Android-устройство поддерживать TCP-соединение с Интернетом без блокировки бодрствования?] (Http://stackoverflow.com/вопросы/13534732/как в изготовлении,-андроид-устройства держи-а-TCP-соединение к интернету-без-бодрствование-ло) – paulsm4