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