Как заморозить фоновые процессы любого приложения без рут-прав на Android 7.0+

7.4k

2

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

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

Однако подавляющее большинство пользователей не увидят Android O на своих устройствах ещё, по крайней мере, несколько месяцев (если вообще увидят). Но если вы используете Android 7.0 или Android 7.1, имеется простое решение, позволяющее предотвратить запуск программ в фоне без прав суперпользователя и использования сторонних утилит (которые также могут отъедать батарею). И в сегодняшнем руководстве мы покажем, как вручную запретить тому или иному прожорливому приложению (привет, Facebook!) работать в фоновом режиме — они будут работать только при активном использовании.

Вместо предупреждения

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

Руководство по ограничению работы любого приложения в фоновом режиме

  1. Создать папку с именем Android в корне диска C:\.
  2. Установить USB-драйвера для вашего устройства (здесь можно найти ссылки на универсальные драйвера для некоторых устройств).
  3. В некоторых случаях для установки драйверов потребуется отключить проверку подлинности.
    • Для Windows 7:
      Во время включения компьютера, после загрузки BIOS, необходимо нажать клавишу F8. В появившимся меню «Дополнительные варианты загрузки» выбрать «Отключение обязательной подписи драйверов». Данный способ может сработать не с первого раза, поэтому следует повторить действие либо открыть командную строку от имени администратора и ввести две команды:
      «bcdedit.exe /set loadoptions DDISABLE_INTEGRITY_CHECKS»;
      «bcdedit.exe /set TESTSIGNING ON».
    • Для Windows 8:
      Нужно нажать сочетание клавиш Win+I, зажать клавишу Shift и выбрать пункт «Выключение» > «Перезагрузка». При включении компьютера выбрать «Диагностика» > «Дополнительные параметры» > «Параметры загрузки» > «Перезагрузить». При загрузке выбрать режим «Отключить обязательную проверку подписи драйверов», нажав клавишу F7.
    • Для Windows 10:
      Необходимо зажать клавишу Shift и выбрать меню «Пуск» > «Выключение» > «Перезагрузка». После загрузки выбрать «Поиск и устранение неисправностей» > «Дополнительные параметры» > «Параметры загрузки» > «Перезагрузить». Затем выбрать пункт «Отключить обязательную проверку подписи драйверов», нажав клавишу F7.
  4. Скачать архив adb-fastboot.zip и распаковать файлы в папку Android.
  5. Установить приложение App Inspector на смартфон.
  6. Активировать пункт «Отладка по USB» на смартфоне.
    Сделать это можно в разделе «Для разработчиков». Как его открыть, можно узнать здесь.
  7. Подключить телефон к компьютеру по USB-кабелю.
    Рекомендуется использовать оригинальный или кабель хорошего качества, а также порт USB 2.0, расположенный на материнской плате (для ПК).
  8. Изменить тип подключения с «Только зарядка» на «Передача файлов (MTP)».
    Это не обязательно делать на каждом устройстве, но многие производители требуют этого в качестве меры безопасности, прежде чем разрешить работу с ADB.
  9. Открыть командную строку и перейти в созданную папку Android командой «cd c:\Android\» (команды пишутся без кавычек).
  10. Убедиться, что компьютер находит устройство по ADB.
    Для этого необходимо ввести «adb devices» в командную строку. На появившейся запрос на телефоне о разрешении об отладке по ADB на данном компьютере необходимо нажать «Ok», при этом выбрав пункт «Всегда разрешать с этого компьютера». Если устройство видно, то выведется текст «List of devices attached» и список всех устройств (например,xxxxxxx device). Если же вместо «device» будет написано «offline» либо список окажется пустым, то необходимо обновить ADB, проверить драйвера/шнур, поменять порт USB/компьютер.
  11. Запустить утилиту App Inspector и выбрать пункт App List (Ordered by name). Найти и выбрать приложение, которому нужно ограничить работу в фоне. Под именем программы будет отображено имя пакета и его версия.
  12. В командной строке ввести «adb shell».
  13. Затем ввести «cmd appops set name.of.package RUN_IN_BACKGROUND ignore», где name.of.package — имя пакета, которое ранее узнали в App Inspector.
    Если после ввода команды не выведено никаких ошибок и появилась новая строка для ввода, значит всё сработало верно.
  14. Чтобы вернуть изменения и снова разрешить фоновые процессы приложения, нужно ввести «cmd appops set name.of.package RUN_IN_BACKGROUND allow».
Если команды на этапах 13 и 14 не работают, попробуйте запустить их без «cmd». Это может потребоваться для некоторых устройств под управлением Android 6.0 Marshmallow или ниже.

Как это работает?

Эта команда позволяет задействовать скрытое разрешение, которое обычно недоступно для пользователя в приложении «Настройки» — «RUN_IN_BACKGROUND». И единственный способ его модификации — использовать «cmd appops», являющееся интерфейсом командной строки для «App Ops» — системы управления правами пользователя Google.

Google добавила эту скрытую команду ADB, позволяющую вам запретить любому приложению получать неявные трансляции (т. е. просыпаться в фоновом режиме), а также запретить этим приложениям планировать фоновые службы без использования JobScheduler (т. е. просыпаться в неподходящее время, разряжая тем самым аккумулятор). На самом деле эта опция предназначена для использования только разработчиками, которые хотят смоделировать, как их приложение будет работать в условиях недостатка памяти, но, к счастью, мы также можем использовать её по собственному усмотрению.

Путём удаления зависимостей от фоновых служб приложения разработчики могут оптимизировать свою программу, чтобы она лучше работала на устройствах с малым количеством оперативной памяти. Google утверждает, что приложения, оптимизированные для таких устройств, могут улучшить как производительность, так и пользовательский опыт в целом. В этом году на Google I/O компания анонсировала модифицированную версию Android под названием Android Go, которая будет использоваться для смартфонов с очень малым количеством ОЗУ, поэтому можно предположить, что эта команда будет актуальна для разработчиков, нацеленных на новую платформу. В любом случае это может быть довольно полезно и для обычного пользователя.

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

Похожие посты

Регистрация прошла успешно