Спящий режим Андроид – что это такое и как отключить – вопрос, требующий срочного решения в ситуации, когда пользователю нужна постоянная работа устройства. Если нужно отключить режим сна или увеличить время затухания, стоит изучить рекомендации данной статьи. Здесь сказано, каким способом провести увеличение временного периода, почему это нужно и какие преимущества можно приобрести от проведения данной операции.
Для чего нужна эта функция?
Стоит рассмотреть, для чего требуется осуществлять подобную операцию. Это специальная опция, которая сэкономит заряд батареи. После некоторого времени дисплей гаснет, устройство переходит в спящий режим.
Несмотря на очевидную полезность спящий режим android надоедает пользователям. Людей начинает раздражать, что гаджет отключается при чтении или просмотре фото. Появляется необходимость отключить режим и сделать работу гаджета удобной. Отключение будет осуществляться через время или намеренным действием пользователя.
Режим энергосбережения в смартфоне Oppo
Сценарий 2. Небольшая задержка в ответе некритична, в режиме Doze сервис должен работать
Проблема с предыдущим сценарием в том, что, хотя приложение и не будет переходить в состояние Standby, режим Doze продолжит на него действовать. К счастью, Android позволяет частично отключить Doze для выбранных приложений и даже предоставляет средства для вывода диалога с запросом на добавление приложения в список исключений. Все, что нужно сделать, — это вызвать следующий интент:
Плюс добавить такую строку в Manifest.xml:
Если юзер согласится добавить приложение в исключение, нажав «Да», наша служба сможет работать с Сетью и устанавливать вейклоки (partial wakelock), даже когда смартфон находится в режиме Doze.
Проблема этого подхода только в том, что Google не пропустит такое приложение в Play Store. Точнее, она должна его пропустить, если подобная функциональность действительно необходима приложению (об этом ясно сказано в документации). Но по факту робот Гугла сразу отшибает любые приложения с пермишеном REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.
Обойти эту проблему можно, если вместо того, чтобы напрямую просить юзера добавить приложение в список исключений, просто кинуть его на экран управления исключениями Doze (Настройка → Батарея → Меню → Экономия заряда батареи), предварительно предупредив, что юзер должен сам найти приложение в списке и выключить для него режим энергосбережения. Сделать это можно с помощью такого метода:
Окно исключений режима Doze
Окно исключений режима Doze
Как убрать спящий режим на телефоне?
Чтобы полностью убрать режим, потребуется использовать специальное ПО Stay Alive. Интерфейс утилиты понятен, после скачивания пользователь поймет, что нужно сделать.
Если нет желания или возможности использовать сторонние приложения, разрешается действовать через настройки. Схему действий можно изучить на примерах гаджетов Honor и Huawei. Выполнить необходимо такие манипуляции:
- Открываются Настройки.
- Нужно перейти в Приложения и уведомления.
- Активируется вкладка Дополнительно, где выбирается Специальный доступ.
Здесь устанавливается время работы при бездействии устройства. При наличии в распоряжении гаджета марки MIUI, человек для смены режима должен произвести следующие действия:
- Переход во вкладку с настройками;
- Нажимается Конфиденциальность;
- Следует зайти в Управление.
На многих гаджетах для достижения цели достаточно запустить функцию Отслеживать использование. При желании можно задействовать опцию Allow the screen to dim, которая переводится, как затемнение дисплея. Если установить соответствующий флажок, свет будет немного темнеть, но блокировки не произойдет.
Если у Вас остались вопросы — сообщите нам Задать вопрос
Режимы энергосбережения Android
В Android 4.4–5.1 (версии ниже мы рассматривать не будем — они стремительно устаревают) служба будет работать и моментально откликаться на запросы сервера, но только до тех пор, пока экран включен. Через несколько секунд после отключения экрана смартфон перейдет в режим сна (suspend), и промежуток между отправкой запроса и ответом нашего приложения будет составлять примерно минуту. Это срок между maintenance-пробуждениями устройства, и повлиять на него мы не можем.
В Android 6.0–7.1 ситуация будет примерно такой же, однако спустя примерно час смартфон перейдет в так называемый режим Doze. После этого ответ от приложения можно либо не получить вовсе, либо получить спустя час или два. А все потому, что в режиме 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 — агрессивный общесистемный режим энергосбережения, который применяется ко всем приложениям.
Все эти режимы энергосбережения можно обойти, но чем дальше в лес, тем больше костылей и неудобств пользователю, поэтому мы рассмотрим несколько вариантов обхода механизмов энергосбережения, от самых лайтовых до хардкорных.
Почему нельзя поменять спящий режим на телефоне?
Это специально продуманное и встроенное ограничение. Оно предназначено для безопасности и для сохранения рабочего состояния. Без сторонних приложений изменить режим сложно по причине того, что функция выступает, как часть работы телефона. Единственное, что можно, это увеличить стандартное время.
Если дисплей телефона не был заблокирован владельцем вручную, гаджет уйдет в «сон» через 30 секунд полного бездействия. Чтобы сделать данный временной промежуток времени более долговременным, придется действовать через настройки. Если же нужно деактивировать опцию, следует зайти в специальное меню или задействовать функционал приложений.
Оптимизация работы аккумуляторной батареи
Итак, как же Android регулирует процесс энергосбережения? Устройства могут работать в одном из трех направлений:
- без ограничений на полную мощность (заряд не экономится и быстро «съедается»);
- умеренно (за счет уменьшения яркости, отключения фоновой работы и ограничения скорости работы ЦП можно сэкономить энергии на 10 часов);
- максимальное энергосбережение (за счет экстремальных ограничений по функциям ЦП и передачи данных можно получить прирост времени «жизни» смартфона без подзарядки до 131 часа).
Но есть и «ручные» методы оптимизации батареи. Чтобы сэкономить заряд, можно:
- Выбрать быструю зарядку, которая сократит время наполнения аккумулятора энергией. Активация происходит по пути Настройки -> Оптимизация -> Батарея. Далее в верхнем углу выбираем «Дополнительные настройки» и «Быстрая зарядка».
- Покопаться в настройках уведомлений в разделе меню оптимизации. Здесь можно отключить оповещения от программ, не используемых более 3 суток, а также тех, которые расходуют максимальный объем заряда.
- Функция «Мониторинг энергопотребления» позволяет проанализировать, какие именно программы расходуют заряд больше других и при необходимости скорректировать ситуацию.
Больше всего сэкономить заряд помогает перевод приложений в «спячку» или полное отключение софта, которым вы редко пользуетесь.
Как настроить спящий режим?
Полезная опция начинает раздражать в разных ситуациях, в которых владелец устройства пользуется им. Среди самых главных можно отметить:
- Просмотр роликов и фото в интернете.
- Игры, где перерыв будет занимать время.
- Изучение карт.
Это такие действия, где человек производит минимальное количество манипуляций на экране. Чтобы избавиться от данного раздражающего фактора, постоянно не разблокировать устройство хонор, нужно действовать по описываемой схеме. Человек должен выполнить в настройках такие манипуляции:
- Следует перейти через строку Экран.
- Нажать на Дополнительно.
- Открывается Спящее положение.
- Выбирается необходимая продолжительность бездействия.
Стоит отметить, что на определенных смартфонах тайм-аут отключить нет возможности. Выдержку можно только продлить до 30 минут. Подобный спящий режим присутствует в стандартных прошивках на устройствах honor. Если подобной опции нет, часто можно найти пункт Не выключать дисплей. Если ввести его в активное положение, телефон не отключится в период подзарядки.
Можно использовать специальное приложение. Речь идет об универсальной утилите Hold Screen On Demo. Она использует фронтальную камеру, чтобы экран по прошествии определенного времени не выключался. Камера следит за взглядом пользователя. Как только человек перестает смотреть на телефон, утилита сможет понять это, отключит смартфон, и он будет не активен.
В данной программе разрешается настроить и поменять перечень определенных приложений. При их активном состоянии камера будет отслеживать направление глаз и их движение по экрану.
Опция отключается бесплатно, и это означает, что не придется платить за отсутствие рекламы. Вариант подходит для пользователей, не желающих тратить время на постоянное переключение настроек на самсунг. Достаточно один раз найти и скачать саму утилиту, и можно избавиться от такого раздражающего фактора, как затухание экрана, при котором в приложениях ничего нельзя сделать.
Функция «Защищенные приложения» на устройствах Huawei
Экономия заряда в Huawei производится разными способами и одним из них является вышеуказанный механизм автоматического отключения запущенных процессов после выключения дисплея. Например, если используете неофициальную версию Диктофона, то заметите, что она выключается, когда телефон не используется.
В этом есть свои плюсы, благодаря которым процессы не расходует заряд аккумулятора в фоновом режиме, что в свою очередь значительно увеличивает время работы устройства на одной зарядке. Но, иногда такое поведение делает невозможным использовать какое-то приложение или приводит к тому, что не отображаются уведомления от него. Решением является использование функции «Защищенные приложения», которая позволяет работать выбранным программам при выключенном экране.
Чтобы воспользоваться этой функцией перейдите на Андроиде в «Настройки – Дополнительные параметры»
Затем выберите «Диспетчер батареи – Защищенные приложения»
. Отобразится список программ, которые установлены на телефоне.
Достаточно найти в списке интересующие и отметить их как защищенные. Теперь все выбранные будут защищены от автоматического закрытия и будут функционировать даже после выключения экрана.
Также можно полностью отключить эту функцию или сделать так, чтобы все приложения всегда работали в фоне. Для этого достаточно передвинуть переключатель «Защитить все» в положение «Включено». Теперь программы будут функционировать в фоновом режиме и ни одна из них не будет закрыта. Но не рекомендуется так делать, потому что это негативно отразится на сроке службы батареи. Безусловно, лучше вручную выбрать те, которые должны работать в фоне, а остальным позволить закрываться после выключения дисплея.
На многих смартфонах и планшетах под управлением Android экран отключается через 30 секунд бездействия пользователя. Как правило, это оптимальный вариант, при котором можно комфортно пользоваться устройством и экономно расходовать заряд его батареи. Но бывают моменты, когда необходимо отключить спящий режим при работе какого-либо приложения.
Так как штатными средствами Android сделать это невозможно, мы расскажем, как это реализовать другими способами. Для начала, давайте определимся, зачем нам может понадобиться отключать тайм-аут экрана, ведь лишнее время работы экрана приводит к быстрой разрядке аккумулятора? Например, вы читаете статью в браузере или смотрите видео в YouTube, делаете паузу и через минуту ваше устройство уже спит крепким сном. Или другой вариант – вы используете смартфон в качестве пульта управления или демонстрируете слайды. Таким образом, самыми распространенными случаями, когда требуется постоянно активный экран, являются:
- чтение электронных книг, документов, другой текстовой информации;
- просмотр фото- и видеоматериалов;
- демонстрация чего-либо на экране смартфона;
- игры, геймплей которых не требует активных действий;
- работа с GPS и картографическими программами.
Некоторые программы и игры отлично справляются с этой задачей самостоятельно. Обычно, во многих читалках, видеоплеерах и других приложениях в настройках есть опция, препятствующая засыпанию устройства. Но далеко не во всех. В таких случаях проще всего в системных настройках выставить более длительный тайм-аут экрана для активного режима.
Но, согласитесь, это даже не столько неудобно, сколько нерационально. Поэтому мы поступим по-другому и будем использовать сторонние средства для тонкой настройки блокировки экрана.
Тайм-аут операции: что делать? Простейший способ исправления ситуации
Как считается, наиболее простым способом, позволяющим избавиться от ошибки 118, является обычное закрытие не отвечающей страницы и ее повторное открытие по истечении минут десяти. Иногда может потребоваться закрыть и перезапустить сам интернет-браузер (часто такие ситуации почему-то наблюдаются в Google Chrome и других браузерах на его основе).
Если такой вариант не помогает, а сообщение «Ошибка: Тайм-аут операции…» выдается снова, можно применить обычную перезагрузку компьютера или ноутбука (а лучше и всех маршрутизаторов типа роутеров или ADSL-модемов).
Достаточно эффективным может оказаться решение проблемы, связанное с внесением, допустим, игрового сайта в список разрешений (исключений) антивируса и брэндмауэра, тем более что в обоих случаях в настройках сделать это не так уж и сложно.
Тайм-аут операции — что это такое?
Итак, на экране монитора возникает ошибка, сообщающая пользователю о том, что соединение прервано, вернее, время ожидания подключения истекло.
В принципе, тайм-аут и можно трактовать как некий временной промежуток, в течение которого система ожидает ответа сервера на собственный отправленный запрос. В системах Windows это параметр установлен по умолчанию, а его значение прописано в сетке системного реестра настроек текущего компьютерного терминала в подразделе SYSTEM, где во вложенных директориях находится подпапка Parameters, где время указано в секундах. Как правило, изменять его не рекомендуется.
Msconfig: вкладка Службы
Здесь всё просто. В списке представлены службы, которые запускаются с загрузкой и работают прямо сейчас. Полезным здесь часто является опция Не отображать службы Microsoft, если нас интересуют загружаемые вместе с Windows программы со стороны. Выставлением или снятием галочки можно проверять влияние той или иной программы на запуск, если вы собираетесь выцепить виновника нестабильной работы.
Применяемые здесь настройки сочленяются с настройками во вкладке Общие
. Как только добавите или снимите службу в этом списке, вариант запуска в первой вкладке изменится на
Выборочный
.
В Windows 10 содержимое вкладки переехало в Диспетчер задач, а вот владельцы предыдущих версий могли прямо отсюда хоть как-то контролировать постоянно расширяющий список программ, которые запускались вместе с Windows, замедляя процесс загрузки. Плюсом фоном зависая в числе запущенных процессов, замедляя и работу в текущем сеансе:
список автоматически загружаемых программ теперь здесь
а вот автозагрузку в windows 7 можно было
Однако, чтобы получить наиболее полное представление об управлении автозагрузкой, лучше уделить внимание статье
Источник: inodroid.ru
Способы исправить слишком быструю разрядку аккумулятора смартфонов OPPO.
советы и хитрости для Android / by admin / August 05, 2021
OPPO, китайская компания по производству смартфонов, в настоящее время является одной из ведущих компаний по производству смартфонов во всем мире. OPPO занимает 15,2% рынка, уступая другим китайским брендам, таким как Xiaomi, Lenovo, а также южнокорейской компании Samsung. OPPO теперь широко известен как эксперт и лидер в области селфи. С 2016 года он занимает 4-е место среди смартфонов, которые делают выдающиеся селфи для людей во всем мире. Компания вышла на рынок с большим количеством смартфонов с функцией украшения селфи, которые установили тенденцию селфи в индустрии смартфонов.
Даже если у вас есть новейший и популярный смартфон, такой как OPPO Smartphone, который, как известно, умеет снимать красивые селфи-снимки, когда батарея разряжается в быстром темпе, это совершенно цинично ситуация. Разряд батареи в настоящее время становится распространенной проблемой на телефонах Android, включая смартфон OPPO. Эта статья может быть полезна тем, кто хочет исправить проблему разряда батареи смартфона OPPO.
- 1 Способы исправить слишком быструю разрядку батареи смартфонов OPPO.
- 1.1 1. Попробуйте уменьшить яркость экрана вашего устройства.
- 1.2 2. Очистите ОЗУ для экономии заряда батареи.
- 1.3 3. Проверьте, не загружали ли вы недавно какие-либо приложения или другие приложения, потребляющие аккумулятор.
- 1.4 4. Отключайте соединение для передачи данных, когда оно не используется.
- 1.5 5. Отключите службы определения местоположения.
- 1.6 6. Всегда отключайте другие службы, когда они не используются.
- 1.7 7. Отключите автояркость и уменьшите время ожидания экрана.
Способы исправить слишком быструю разрядку батареи смартфонов OPPO.
Это краткое руководство поможет вам с некоторыми из следующих методов, которые помогут вам исправить разрядку аккумулятора вашего смартфона OPPO.
1. Попробуйте уменьшить яркость экрана вашего устройства.
У некоторых пользователей есть привычка поддерживать яркость экрана на высоком уровне. Поэтому, если вы сохраните яркость экрана на высоком уровне, батарея устройства будет разряжаться слишком быстро. Поэтому попробуйте использовать устройство с низкой яркостью, чтобы сэкономить как ваши глаза, так и время автономной работы вашего устройства. Не забывайте устанавливать яркость экрана на комфортный для глаз уровень.
2. Очистите ОЗУ для экономии заряда батареи.
Служба, которая не спит. 3 способа обойти режимы энергосбережения Android в своей программе
Давным-давно, когда Android еще не был мейнстримом, любой разработчик мог написать приложение, которое сможет спокойно висеть в фоне и в режиме реального времени обмениваться данными с сервером. Но чем дальше, тем более жесткие техники сохранения энергии применяет Google, и сегодня так просто сетевое реалтаймовое приложение уже не реализуешь. Однако есть несколько трюков, которые позволяют это сделать.
Давай представим, что у нас есть приложение, а у него, в свою очередь, есть служба (service), которая должна постоянно висеть в фоне, обрабатывать команды, полученные от сетевого сервера, и отправлять ответы. Связь с сервером, как это и положено мобильным устройствам, поддерживается с помощью long poll запросов, то есть приложение подключается к удаленному серверу и ждет, пока тот отправит что-либо в ответ, а потом переподключается и ждет снова. Это эффективный и очень экономный в плане заряда батареи способ, который в том числе используется в механизме push-уведомлений самого Android.
В теории все выглядит отлично, архитектура приложения абсолютно правильная, вот только, если начать его тестировать, вскроется несколько очень неприятных моментов.
Режимы энергосбережения Android
В Android 4.4–5.1 (версии ниже мы рассматривать не будем — они стремительно устаревают) служба будет работать и моментально откликаться на запросы сервера, но только до тех пор, пока экран включен. Через несколько секунд после отключения экрана смартфон перейдет в режим сна (suspend), и промежуток между отправкой запроса и ответом нашего приложения будет составлять примерно минуту. Это срок между maintenance-пробуждениями устройства, и повлиять на него мы не можем.
В Android 6.0–7.1 ситуация будет примерно такой же, однако спустя примерно час смартфон перейдет в так называемый режим Doze. После этого ответ от приложения можно либо не получить вовсе, либо получить спустя час или два. А все потому, что в режиме 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, ведь команда на блокировку может прийти в любой момент.
Получить, а точнее запросить права администратора опять же просто. Для начала нам понадобится пара колбэков, которые будут вызваны после того, как права получены или отозваны:
А затем достаточно вызвать интент DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN, который приведет к появлению на экране окна для активации прав администратора:
mDeviceAdmin = new ComponentName(activity, myDeviceAdminReceiver.class); Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdmin); startActivityForResult(intent, 1);
![]() |
![]() |
Запрос на активацию прав администратора и окно управления администраторами |
Сценарий 2. Небольшая задержка в ответе некритична, в режиме Doze сервис должен работать
Проблема с предыдущим сценарием в том, что, хотя приложение и не будет переходить в состояние Standby, режим Doze продолжит на него действовать. К счастью, Android позволяет частично отключить Doze для выбранных приложений и даже предоставляет средства для вывода диалога с запросом на добавление приложения в список исключений. Все, что нужно сделать, — это вызвать следующий интент:
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Плюс добавить такую строку в Manifest.xml:
Если юзер согласится добавить приложение в исключение, нажав «Да», наша служба сможет работать с Сетью и устанавливать вейклоки (partial wakelock), даже когда смартфон находится в режиме Doze.
Проблема этого подхода только в том, что Google не пропустит такое приложение в Play Store. Точнее, она должна его пропустить, если подобная функциональность действительно необходима приложению (об этом ясно сказано в документации). Но по факту робот Гугла сразу отшибает любые приложения с пермишеном REQUEST_IGNORE_BATTERY_OPTIMIZATIONS.
Обойти эту проблему можно, если вместо того, чтобы напрямую просить юзера добавить приложение в список исключений, просто кинуть его на экран управления исключениями Doze (Настройка → Батарея → Меню → Экономия заряда батареи), предварительно предупредив, что юзер должен сам найти приложение в списке и выключить для него режим энергосбережения. Сделать это можно с помощью такого метода:
![]() |
![]() |
Окно исключений режима Doze |
Сценарий 3. Задержка в ответе недопустима, в режиме Doze сервис должен работать
К сожалению, даже если ты добавишь приложение в исключения Doze, ты все равно не избежишь задержки в ответе. Одна минута может быть некритична для большинства приложений, но, если речь идет о чем-то вроде мессенджера, никакая задержка не допустима.
Чтобы избежать задержки, можно использовать трюк, примененный в мессенджере Signal. Работает он так: когда на смартфон отправляется сообщение, сервер отсылает на него же пустое push-уведомление, единственная задача которого — разбудить мессенджер и передать ему управление. После этого Signal благополучно получает сообщение с сервера и вновь засыпает.
Реализация push-уведомлений выходит далеко за рамки этой статьи, поэтому я не буду рассказывать о ней, но поделюсь некоторыми советами.
- Push-уведомления должны быть реализованы средствами Firebase Cloud Messaging (FCM, ранее Google Cloud Messaging) или с помощью библиотек и сервисов на основе этой технологии.
- Уведомления должны быть высокоприоритетными, иначе они не смогут вытащить твое приложение из Doze.
- Твое приложение должно находиться в списке исключений Doze, иначе, проснувшись после получения push, оно не сможет выйти в Сеть.
- Самый простой способ реализации push-уведомления — это сервис OneSignal. Он построен на базе FCM, очень легко интегрируется в приложение и предоставляет безлимитное количество пушей даже в бесплатной версии.
Другие статьи в выпуске:
Xakep #218. Смотри во все глаза
- Содержание выпуска
- Подписка на «Хакер» -60%
Вместо выводов
С каждой новой версией Android Google все больше ограничивает разработчиков приложений в возможностях. Однако обходные пути всегда можно отыскать. Да, порой эти пути больше напоминают извилистые лесные тропы, чем автомагистраль. Но они есть, и Google не закрывает все возможные пути реализации функциональности, намеренно оставляя лазейки.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Источник: xakep.ru