2013-03-25 5 views
15

Я искал SO и сеть, но я не мог найти достаточного ответа для моего конкретного вопроса. Хорошо, вот мы идем:Когда устройство Android переходит в спящий режим?

Каждый пользователь может изменить время ожидания экрана на Android. (когда экран выключается, когда он простаивает в течение __ секунд/минут - выбор пользователей). Но пользователь может изменять ТОЛЬКО тайм-аут экрана, а не когда устройство действительно засыпает. Я нашел здесь, что происходит, когда устройство засыпает: (Действительно хороший ответ от CommonsWare) Android Sleep/Standby Mode

Хорошо, мой вопрос прост. Как узнать, когда мой телефон перейдет спать? Он будет спать сразу же после выключения экрана? Будет ли он «бодрствовать» через некоторое время после выключения экрана? И самое главное: зависит от режима сна в определенном устройстве от устройства бренда (как производитель реализует это) или зависит от версии ПЗУ (например, все устройства с питанием от ICS будут спать через X секунд после выключения экрана)?

ответ

23

Вы никогда не можете быть уверены, что устройство ушло спать. В лучшем случае, я могу дать вам список вещей, которые бы убедиться, что устройство не уснула:

  • экрана быть на - Требуется процессор и GPU, и, следовательно, оперативной памяти, чтобы оставаться активным
  • Любое приложение, проведение wakelock - Даже самое низкое wakelocks держать процессор на, хотя экран может быть выключен

Помимо этого, нет никакой гарантии, что устройство переходит в спящем режиме n секунд после того, как экран повернут даже если никакие wakelocks не удерживаются. Это до OEM, и они могут изменить это.

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

+0

+1 за хорошее объяснение. – Raghunandan

+1

Даже я не спросил, что вы мне ответили: «Имейте в виду, что на устройствах Android есть возможность оставить устройство незаблокированным в течение определенного времени после того, как экран заснул». Хороший ответ .. – rootpanthera

8

Существует небольшая разница в потребляемой мощности при сравнении телефона с ноутбуками. Ноутбуки большую часть времени работают от прямого питания через зарядное устройство. (В основном мы несем заряд с ноутбуком). Мобильные телефоны в основном работают от аккумулятора. (Редко мы нес зарядное устройство с нами).

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

Именно поэтому, когда мощность экрана ЖК-дисплея отключена (это означает, что пользователь не взаимодействует с телефоном), за долю секунд процессор также переходит в режим (спящий режим), где он выполняет минимальную работу и экономит заряд батареи. Когда CPU находится в спящем режиме, он принимает команды только от RIL (уровень радиоинтерфейса), который в основном представляет собой функции SMS и вызова, а также сигналы тревоги. Помимо этого CPU перестает выполнять другие функции приложений.

Примечание: Если какое-либо приложение хочет получить процессорное время для работы в аварийной ситуации, когда процессор находится в спящем режиме, он может запросить время процессора с помощью WAKE LOCKS.

Для примера: приложение MP3 должно продолжать воспроизводить песни в своем сервисе, даже если пользователь выключил ЖК-экран. Это означает, что служба приложения MP3 запросила процессорное время, используя WAKE LOCKS.

Ваш вопрос: Как узнать, когда мой телефон перейдет спать? - Ans: Простой режим переходит в спящий режим, когда мощность ЖК-дисплея выключена, за доли секунды.

Ваш вопрос: Есть ли режим сна, в частности, устройства зависит от марки устройства - Ans: Так как Android является открытым исходным кодом, любой OEM может взять слой водителя, который является лицензия GPU и может изменить менеджер мощности привода ведут себя по-другому. Все эти режимы сна и блокировки вокала, наконец, находятся под контролем драйвера Power Manager уровня ядра Linux.

4

для тестирования режима сна/дремать в Android 6.0, вы должны использовать следующие команды:

$ adb shell dumpsys battery unplug 
$ adb shell dumpsys deviceidle step 

подробнее смотрите здесь: Optimizing for Doze and App Standby