Когда устройство Android переходит в спящий режим?
Я искал SO и web, но я не мог найти достаточного ответа для моего конкретного вопроса. Хорошо, вот мы идем:
Каждый пользователь может изменять тайм-аут экрана на Android. (когда экран выключается, когда он простаивает в течение __ секунд/минут - выбор пользователей). Но пользователь может изменять ТОЛЬКО тайм-аут экрана, а не когда устройство действительно засыпает. Я нашел здесь, что происходит, когда устройство ложится спать: (Действительно приятный ответ от CommonsWare) Режим ожидания/режима ожидания Android
Хорошо, мой вопрос прост. Как узнать, когда мой телефон перейдет спать? Он будет спать сразу же после выключения экрана? Будет ли он "бодрствовать" через некоторое время после выключения экрана? И самое главное: зависит от режима сна в определенном устройстве от устройства бренда (как производитель реализует это) или зависит от версии ПЗУ (например, все устройства с питанием от ICS будут спать через X секунд после выключения экрана)?
Ответы
Ответ 1
Вы никогда не можете быть уверены, что устройство ушло спать. В лучшем случае я могу дать вам список вещей, которые бы следили за тем, чтобы устройство не заснуло:
- Экран включен. Требуется, чтобы CPU и GPU и, следовательно, RAM, оставались активными.
- Любое приложение, содержащее wakelock - Даже самые низкие wakelocks поддерживают процессор, хотя экран может быть отключен.
Кроме того, нет гарантии, что устройство перейдет в режим сна n
секунд после выключения экрана, даже если никакие wakelocks не удерживаются. Это до OEM, и они могут изменить это.
Имейте в виду, что устройства Android имеют возможность держать устройство разблокированным в течение определенного времени после того, как экран перешел в режим сна.
Ответ 2
Существует небольшая разница в потребляемой мощности при сравнении телефона с ноутбуками.
Ноутбуки большую часть времени работают от прямого питания через зарядное устройство. (В основном мы несем заряд с ноутбуком).
Мобильные телефоны в основном работают от аккумулятора. (Редко мы несем зарядное устройство вместе с нами).
Помня об этом, Android разработал таким образом, что телефон не будет потреблять энергию батареи, если пользователь не взаимодействует с телефоном. Это делается для увеличения времени автономной работы аккумулятора.
Поэтому, когда мощность экрана ЖК-дисплея отключена (это означает, что пользователь не взаимодействует с телефоном), за долю секунд процессор также переходит в режим (спящий режим), где он выполняет минимальную работу и экономит заряд батареи. Когда CPU находится в спящем режиме, он принимает команды только от RIL (уровень радиоинтерфейса), который в основном представляет собой функции SMS и вызова, а также сигналы тревоги. Помимо этого ЦП прекратит выполнение других функций приложений.
Примечание. Если какое-либо приложение хочет процессорное время для аварийной работы, когда CPU находится в спящем режиме, он может запросить время процессора с помощью WAKE LOCKS.
Например, приложение MP3 должно продолжать воспроизводить песни в своем сервисе, даже если пользователь выключил ЖК-экран. Это означает, что служба приложений MP3 запросила процессорное время с помощью WAKE LOCKS.
Ваш вопрос. Как узнать, когда мой телефон перейдет спать?
- Ans. Простой режим переходит в спящий режим, когда питание ЖК-дисплея выключено, за считанные секунды.
Ваш вопрос. Спящий режим зависит от устройства бренда.
- Ans. Поскольку Android имеет открытый исходный код, любой OEM-производитель может использовать уровень драйвера, который является лицензией GPU, и может изменять привод управляющего устройства, чтобы вести себя по-другому. Все эти режимы сна и блокировки вокалов находятся под контролем драйвера Power Manager уровня ядра Linux.
Ответ 3
для тестирования режима ожидания/доза в Android 6.0 вы должны использовать следующие команды:
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
подробнее см. здесь: Оптимизация для Doze и App Standby