Заставить телефон Android спать, чтобы проверить?

Я пишу приложение для Android, которое зависит от сетевой активности, и менеджер будильника иногда пробуждает телефон из спящего состояния.

Мой вопрос: как я могу надежно проверить это на устройстве? В идеале, как заставить телефон полностью перейти в спящий режим. В противном случае, как я могу точно знать, когда телефон полностью перешел в спящий режим?

Как вы тестируете свой код обработки Alarm Manager/Wake Lock/Sleep?


person Chris Best    schedule 05.08.2010    source источник


Ответы (4)


Выключите экран устройства/эмулятора, а затем выполните следующие команды:

adb shell dumpsys battery unplug
adb shell dumpsys deviceidle step

Повторно запускайте второй, пока не получите сообщение «IDLE». Это работает на устройствах под управлением Android 6.0 или новее.

person Force    schedule 07.11.2016

Шаг 1

а. В настройках поставьте устройство на "разрядку" (следуйте инструкциям в красных квадратиках).

б. Выключите экран устройства, нажав кнопку «питание» (синяя рамка).

Включите телефон в эмуляторе

Шаг 2

а. Чтобы напрямую перевести устройство в спящий режим, запустите:

adb shell dumpsys deviceidle force-idle

б. Или медленно перейдите в спящий режим, запустите:

adb shell dumpsys deviceidle step несколько раз.

Шаг 3

Чтобы подтвердить состояние простоя устройства, запустите:

adb shell dumpsys deviceidle get deep

person user1032613    schedule 17.12.2017

Нажатие кнопки питания на устройстве должно перевести его в спящий режим. Существует также goToSleep(long time) в PowerManager, но для этого требуется DEVICE_POWER, которое зарезервировано для системных приложений.

person Ryan Conrad    schedule 05.08.2010
comment
Спасибо. Это то, что я делал, но я подозреваю, что нажатие кнопки питания переводит дисплей в спящий режим немедленно, но не обязательно переводит в спящий режим процессор (что, по-видимому, может в конечном итоге произойти - судя по этому developer.android.com/reference/android/app/) - person Chris Best; 05.08.2010
comment
Хм, я думал, что сила сделала это. В журнале отладки я привык видеть сообщение о том, что я устал, засыпаю, когда нажимаю кнопку питания, поэтому я почти уверен, что он засыпает/уменьшает нагрузку на процессор. - person Brad Hein; 05.08.2010
comment
Может быть, это вещь для каждого устройства. Я использую Milestone, и это не говорит мне об этом ... экран просто выключается, и я продолжаю получать сообщения журнала, как обычно. - person Chris Best; 05.08.2010
comment
Вам нужно отключить USB, чтобы увидеть истинные эффекты сна в вашем приложении. Оставив USB подключенным через Eclipse, вы делаете странные вещи с фоновыми службами. - person just_another_coder; 01.09.2010
comment
конечно, то, что @Ryan Conrad заявляет, является ерундой - для этого и нужен wakelock - если какое-то приложение получит его, устройство не перейдет в спящий режим при нажатии кнопки питания, см. software.intel.com/en-us/android/articles/ - person Marian Paździoch; 07.10.2015
comment
@MarianPaździoch, вы понимаете, что статья, на которую вы ссылаетесь, была написана через 3 года после того, как я опубликовал этот ответ. И как это ерунда? Нажатие кнопки питания переводит его в сон. Вопрос заключался в том, как заставить телефон полностью перейти в спящий режим, а wakelock удерживает его в бодрствующем состоянии, что противоположно первоначальному вопросу. - person Ryan Conrad; 07.10.2015

если вы хотите протестировать эмулятор, то на главном экране нажмите меню -> настройки -> приложения -> разработка -> снимите флажок бодрствовать

person bhanu    schedule 20.11.2010