Почему телефон не отключается в спящий режим. Блокировка сна для Android

Давным-давно, когда Android еще не был мейнстримом, любой разработчик мог написать приложение, которое сможет спокойно висеть в фоне и в режиме реального времени обмениваться данными с сервером. Но чем дальше, тем более жесткие техники сохранения энергии применяет Google, и сегодня так просто сетевое реалтаймовое приложение уже не реализуешь. Однако есть несколько трюков, которые позволяют это сделать.

Давай представим, что у нас есть приложение, а у него, в свою очередь, есть служба (service), которая должна постоянно висеть в фоне, обрабатывать команды, полученные от сетевого сервера, и отправлять ответы. Связь с сервером, как это и положено мобильным устройствам, поддерживается с помощью long poll запросов, то есть приложение подключается к удаленному серверу и ждет, пока тот отправит что-либо в ответ, а потом переподключается и ждет снова. Это эффективный и очень экономный в плане заряда батареи способ, который в том числе используется в механизме push-уведомлений самого Android.

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

Режимы энергосбережения Android

В Android 4.4–5.1 (версии ниже мы рассматривать не будем - они стремительно устаревают) служба будет работать и моментально откликаться на запросы сервера, но только до тех пор, пока экран включен. Через несколько секунд после отключения экрана смартфон перейдет в режим сна (suspend), и промежуток между отправкой запроса и ответом нашего приложения будет составлять примерно минуту. Это срок между maintenance-пробуждениями устройства, и повлиять на него мы не можем.

В Android 6.0–7.1 ситуация будет примерно такой же, однако спустя примерно час смартфон перейдет в так называемый . После этого ответ от приложения можно либо не получить вовсе, либо получить спустя час или два. А все потому, что в режиме Doze смартфон фактически не дает работать сторонним приложениям и их службам и полностью отрезает им доступ в Сеть. Управление они могут получить только на короткий промежуток времени спустя час после перехода в режим Doze, затем два часа, четыре часа, со все большим увеличением промежутков между пробуждениями.

Хорошие новости в том, что Doze работает общесистемно и включается спустя час после отключения экрана и только если не трогать смартфон (в 7.0–7.1 можно и трогать), а отключается сразу после разблокировки смартфона, подсоединения к заряднику или движения смартфона (опять же не в 7.0–7.1). То есть можно надеяться на то, что хотя бы днем наш сервис будет работать нормально.

Плохие же новости в том, что, помимо Doze, в Android 6.0–7.1 есть и другой механизм энергосбережения под названием App Standby. Работает он примерно так: система следит за тем, какие приложения использует юзер, и применяет к редко используемым приложениям те же ограничения, что и в случае с режимом Doze. При подключении к заряднику все переведенные в режим Standby приложения получают амнистию. К приложениям, имеющим уведомление или права администратора (не root), режим Standby не применяется.

Итого, в Android есть сразу три механизма, с которыми придется бороться:

  • Suspend - обычный режим энергосбережения, может замедлить получение ответа от устройства примерно на одну минуту;
  • App Standby - агрессивный режим энергосбережения, способный замедлить получение ответа на сутки;
  • Doze - агрессивный общесистемный режим энергосбережения, который применяется ко всем приложениям.

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

Сценарий 1. Небольшая задержка в ответе некритична, переход в Doze некритичен

В этом сценарии у тебя есть приложение, для которого задержка в ответе до одной минуты некритична, а переход смартфона в режим агрессивного энергосбережения совсем не страшен. Все, что тебе нужно, - это чтобы система не отправляла приложение в состояние Standby.

Два самых простых способа добиться этого - либо вывести службу на передний план (foreground service), либо дать приложению права администратора устройства. Начнем с первого варианта.

Foreground service

Foreground service в терминологии Android - это служба, которая имеет уведомление в шторке. Система относится к таким службам гораздо бережнее. Например, при нехватке памяти она будет убита в последнюю очередь, она не будет убита при смахивании приложения в меню управления запущенными приложениями, и да, к ней не будет применен режим Standby.

Создать foreground service очень просто. Достаточно вставить в код службы примерно такие строки:

Intent notificationIntent = new Intent(this, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); Notification notification = new Notification.Builder(this) .setContentTitle(getText(R.string.notification_title)) .setContentText(getText(R.string.notification_message)) .setSmallIcon(R.drawable.icon) .setContentIntent(pendingIntent) .setTicker(getText(R.string.ticker_text)) .build(); startForeground(0, notification);

Этот пример создает уведомление, при тапе на которое будет запущена ExampleActivity, в конце с помощью startForeground() служба переводится в статус foreground.

Права администратора

Другой вариант - это дать приложению права администратора. Такие права обеспечивают возможность управлять политикой формирования паролей экрана блокировки, делать удаленную блокировку и вайп устройства.

В свое время Google ввела понятие «администратор устройства» для компаний, которые хотели бы управлять смартфонами своих сотрудников. То есть компания создает приложение, которое получает права администратора и может заблокировать или сбросить телефон после команды от сервера. Именно поэтому приложение с правами администратора не переходит в режим Standby, ведь команда на блокировку может прийти в любой момент.

Получить, а точнее запросить права администратора опять же просто. Для начала нам понадобится пара колбэков, которые будут вызваны после того, как права получены или отозваны:

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

С каждым годом мобильные телефоны становятся не только быстрее, тоньше, красивее, но и прожорливее. Большинство современных гаджетов с трудом работают сутки без подзарядки, особенно в руках любителей позависать в соцсетях.

Чтобы продлить драгоценное время работы гаджета, в смартфонах Honor предусмотрено много настроек. Рассмотрим на примере Honor 9, как можно в полтора, а то и в два раза прокачать автономность устройства.

  • Активируем режим энергосбережения

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

    • Переходим в настройки — Батарея — Режим энергосбережения

    При активации режима смартфон полностью ограничивает фоновую активность и синхронизацию. Это значит, что сообщения из мессенджеров, письма с электронной почты и уведомления (пуши) от других приложений не будут приходить на девайс в заблокированном состоянии.

    В крайнем случае посмотреть, что вам написали, все равно можно — необходимо открыть нужное приложение и вся пропущенная информация начнет приходить.

    Включение энергосбережения уменьшает яркость дисплея и снижает количество анимаций интерфейса — это также положительно сказывается на автономности аппарата.

    Кроме того, в параметрах батареи можно включить режим Ультра. В нем будут доступны только звонки и SMS — это позволит пользоваться аппаратом больше недели без подзарядки.

  • Настройка фоновых приложений

    Еще один эффективный способ продлить время работы смартфона Honor — вручную настроить работу фоновых приложений. Пока вы носите гаджет в кармане или сумке, некоторые программы продолжают работать — получают новые сообщения или отправляют отчёты, обновляются и т.д.

    На это могут уходить лишние 5-10% батареи. Чтобы избежать ненужной растраты батареи, нужно проделать следующее:

    • Зайти в настройки — Батарея — Фоновые приложения

    Здесь нужно выбрать те приложения, которыми вы редко пользуетесь — они будут закрыты после блокировки экрана.

  • Запрещаем ненужным программам выходить в сеть

    Ни для кого не секрет, что одним из главных потребителей энергии аккумулятора является соединение с интернетом. Практически весь софт сейчас выходит в интернет для подкачки данных, определения местоположения, погоды и много другого — в обычном режиме это также съедает 5-10%.

    Однако при низкой скорости интернета, скачивание даже маленьких данных занимает гораздо больше времени. Из-за этого смартфон практически не «спит» в заблокированном состоянии и разряжается буквально на глазах.

    Хорошо, что разработчики предусмотрели такую ситуацию и добавили в параметры Honor 9 гибкую настройку выхода в интернет для каждого приложения.

    • Заходим в приложение «Диспетчер телефона» — «Моб. передача данных» — «Сетевые приложения»

    Перед нами два столбика с галочками — передача данных через мобильную связь или через Wi-Fi. К примеру, если вам в отпуске или на выходных в загородном доме не нужна почта, мессенджеры и соцсети (все или только определенные), можно запретить им выходить в интернет — это существенно сэкономит батарею.

  • «Усмиряем» Google

    Мобильная операционная система Android разработана поисковым гигантом и неудивительно, что Google хочет знать о вас как можно больше. Ему это нужно для того, чтобы потом предлагать вам более точную рекламу.

    Здесь нет ничего плохого, но батарею постоянная слежка за вашими действиями и отправка их на сервер съедает изрядно.

    К счастью, Google позволяет отключить многие свои поисковые параметры. Переходим в одноименное приложение «Google» — настройки.

    Убираем все ползунки в следующих параметрах:

    • «Лента», «Офлайн-поиск», «Поиск по экрану», «Автозаполнение», «Уведомления» — «Лента»

    Такая «диета» от сервисов Google помогает сохранить еще 10-15% батареи в день.

  • Оптимизация

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

    Программа предлагает снизить яркость экрана, выключить автосинхронизацию, запретить приложениям работать в фоновом режиме.

    Там же стоит посмотреть уровень расхода аккумулятора, чтобы понять, какое именно приложение потребляет больше всего энергии.

    Кроме того, перейдя в настройки батареи (значок шестеренки в правом верхнем углу), можно запретить Wi-Fi и или мобильные данные работать в спящем режиме — это не позволит смартфону разряжаться в фоновом режиме, когда он лежит в кармане и на прикроватной тумбочке во время сна.

Знакомая ситуация: вы считываете некую информацию с экрана смартфона, а дисплей в этот момент затухает. А если на прочтение потребуется не несколько секунд, а значительно больше? Понятно, что постоянное нажимание кнопки включения, мягко говоря, раздражает.

Как сделать чтобы не гас экран Андроид? Оказывается, ситуация не столь критична как может показаться. Для её решения существует несколько способов, о которых мы сейчас поговорим.

Чтобы отрегулировать отключение экрана своего телефона, используя предустановленные инструменты, нужно зайти в «Настройки «, открыть раздел «Экран «, выбрать пункт «Спящий режим » и выставить там комфортное для вас время «бодрствования» смартфона, после которого экран будет гаснуть, или вообще убрать спящий режим, отметив соответствующую строку:

Как отключить тайм аут экрана с помощью стороннего софта

Думаю, не стоит особо вдаваться в подробности, для чего нужна функция «Спящий режим», или отключение экрана через определённый промежуток времени (таймаут от англ. timeout – время ожидания). Понятно, что, если смартфон будет находиться постоянно в активном режиме, то заряд батареи слишком быстрыми темпами начнёт стремиться к нулю.

В таком случае проблема легко решается с использованием специальных утилит.

Hold Screen On Demo

Эта программа не даст погаснуть экрану, пока вы на него смотрите. С помощью фронтальной камеры Hold Screen ON улавливает ваш взгляд и не даёт смартфону «уснуть». Когда же вы перестаёте смотреть на экран, он затухает и, соответственно, прекращается потребление ресурсов.

Есть возможность привязать работу утилиты к конкретному приложению, и тогда экран телефона не будет гаснуть, определяя ваши глаза в этом приложении, однако, если ваша камера будет работать в другом приложении, то программе придётся подождать, пока она освободится.

Владельцы Samsung Galaxy S3 пользуются этой функцией без установки утилиты, поскольку в этой модели она присутствует по умолчанию, а если у вас более простой аппарат, то нужно просто скачать Hold Screen ON :

KeepScreen (now free)

Ещё одно хорошее приложение, которое отлично справляется с задачей отключения таймаута. В отличие от предыдущего, Keep Screen контролирует положение аппарата, используя встроенный гироскоп. Поэтому, когда вы держите свой гаджет в руках, утилита, учитывая его угол наклона относительно горизонтальной оси, не даст экрану погаснуть.

Кроме того, здесь тоже есть возможность заблокировать отключение экрана на Андроид-устройстве для выбранных приложений. Для этого, после указания нужной программы, нажимаем»Start/stop service «, а на телефоне, в датчике погашения экрана (см. первый скриншот) выставить интервал 30 секунд.

Keep Screen бережно относится к ресурсам смартфона и работает в фоновом режиме, для этого нажимаем «On », а после этого «Save and restart app ».

Важно! Если выключить (заблокировать) аппарат, используя кнопку питания, во время работы программы, то по истечении тридцати секунд экран включится и уже не погаснет. Поэтому, прежде чем блокировать гаджет кнопкой питания, нужно закрыть приложение или просто вернуться на основной рабочий стол.

По сегодняшней теме нам больше нечего добавить, а, насколько была полезна представленная информация, судить, конечно, вам. Удачи!

Honor 6 оснащается несъёмным литиево-полимерным аккумулятором ёмкостью 3100 мА-ч (11.5 Вт-ч). Ёмкость аккумулятора не рекордная, но очень хорошая и достаточная для обеспечения длительного времени автономной работы.

В программном обеспечении Honor 6 присутствует большое количество настроек энергопотребления. В меню «Энергосбережение» можно выбрать один из трёх профилей энергопотребления - «Производительность», «Умный» и «Энергосберегающий». При этом смартфон прогнозирует оставшееся время работы в каждом из режимов.

Энергосберегающий режим в Honor 6 реализован очень интересно. В нём блокируются практически все функции телефона, кроме звонков, SMS и доступа к контактам. Зато в этом режиме смартфон работает очень долго. Это хорошее решение для тех моментов, когда аккумулятор почти разряжен, а вам обязательно надо оставаться на связи. При этом при падении заряда аккумулятора до критично низкого уровня смартфон сам предложит вам перейти в режим энергосбережения, порог срабатывания этого предупреждения пользователь может выбрать сам (8, 20 или 30 процентов).

За счёт агрессивных настроек встроенный менеджер питания зачастую закрывает приложения, работающие в фоновом режиме. В том числе «под раздачу» могут попасть и приложения для обмена сообщениями (например, Viber). Но пользователь может вручную указать, какие приложения должны быть защищены от закрытия в спящем режиме. Например, я на своём Honor 6 включил эту опцию для Viber.

Наконец, в меню есть специальный режим, который в русской версии интерфейса почему-то называется «Заставка» (в украинской - «Економний режим роботи»). В этом режиме смартфон отрисовывает и выводит на экран графику в разрешении 1280х720, результатом чего становится повышение быстродействия и снижение энергопотребления. Правда, при этом несколько страдает чёткость мелких шрифтов.

В сбалансированном режиме энергопотребления Honor 6 способен продержаться порядка двух дней при трёх часах работы экрана в день. Это очень достойный результат. Если играть на смартфоне в игры, то время работы ожидаемо сокращается, но и в этом случае аппарат без проблем доживает до вечера.

В отличие от iOS и Windows Phone, на Android в фоновом режиме может работать множество приложений и сервисов. Все они создают дополнительную нагрузку на оперативную память и процессор, а значит, расходуют драгоценную энергию. Причем, они работают даже тогда, когда не нужно — например, ночью, в то время как вы спите.

Решить проблему чрезмерного потребления Android-приложениями ресурсов устройства можно несколькими способами: запретить приложениям, которыми вы пользуетесь редко, запускаться вместе с загрузкой системы или более радикально - отключать Wi-Fi, мобильный интернет и большинство фоновых процессов.

1. Установите его из Google Play, запустите.

2. Зайдите в раздел Phone Boost, нажмите кнопку «Autostart Manager», там показаны все приложения, которые запускаются при включении устройства.

3. Просмотрите список и отключите автозапуск тех приложений, которые, как вы считаете, не должны все время работать фоном.


Теперь зайдите в системные настройки, откройте менеджер запущенных приложений и завершите работу тех, которые в ближайшее время вам будут не нужны.


Более серьезной экономии ресурсов можно добиться с помощью приложений, которые при выключении экрана уводят устройство в глубокий сон. Одно из таких приложений - . Оно позволяет отключить модуль 3G, интернет, Bluetooth, синхронизацию данных и сильно ограничить работу фоновых процессов.

Как работать с Deep Sleep Battery Saver:

1. Установите его из Google Play, запустите и предоставьте ему root-права.

2. При желании смените язык интерфейса на русский.


3. Зайдите во вкладку «Профиль» и выберите, что будет происходить, когда экран вашего устройства выключен. Чем более строгая экономия, тем меньше ресурсов устройства будет расходоваться.

4. В настройках Deep Sleep Battery Saver можно выбрать приложения для «белого списка» - они смогут работать фоном, даже если активирован глубокий сон.

При использовании Deep Sleep Battery Saver время автономной работы устройства может продляться в разы, и при этом смартфон не отвлекает вас всякий раз, когда вам приходит новое письмо или сообщение. Правда, уведомления будут приходить с задержкой - только когда приложение включит интернет.

Публикации по теме