Заморозить фоновые процессы без рута (Android 7.0+)

В этом руководстве показано, как заморозить фоновые процессы любого приложения на Android 7.0 и 7.1 Nougat без root-прав с помощью скрытой команды ADB.

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

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

Однако подавляющее большинство пользователей не увидят Android O на своих устройствах в течение многих месяцев (если вообще увидят). Но если ты бежишь Андроид 7.0 или Андроид 7.1, есть простой трюк, который можно проделать вручную запретить запуск приложения в фоновом режиме - и это не требует рута или стороннее приложение. Это более мощное решение, чем то, что предлагают Greenify или такие приложения, как Brevent, поскольку без root-доступа эти приложения довольно ограничены в своих возможностях. Но с помощью этого трюка теперь вы можете блокировать приложения, такие как Facebook или Hangouts от работы в фоновом режиме — они будут работать только тогда, когда они активно используются!


Учебное пособие по ограничению фоновых процессов

Требования:

  • Устройство Android Nougat (7.0 или 7.1)
  1. Установите драйверы USB для вашего конкретного OEM-устройства (Google предоставляет список некоторых универсальные драйвера USB здесь).
  2. Загрузите Бинарный файл АБР для вашей конкретной ОС (Окна, Мак, Линукс). Эти ссылки всегда будут указывать на последнюю версию двоичного файла.
  3. Извлеките содержимое ZIP-файла в легкодоступную папку на вашем компьютере.
  4. Перейдите в приложение «Настройки» на своем телефоне и нажмите «О телефоне».
  5. Найдите номер сборки и нажмите на него 7 раз, чтобы включить режим разработчика.
  6. Вернитесь в главное меню «Настройки» и войдите в «Параметры разработчика», чтобы включить режим отладки по USB.
  7. Подключите телефон к компьютеру и переведите его из режима «только зарядка» в режим «передача файлов (MTP)». Это не обязательно на каждом устройстве, но на многих устройствах это требуется в качестве меры безопасности, прежде чем разрешить работу ADB.
  8. Вернитесь на компьютер и перейдите в каталог, в который вы распаковали двоичный файл ADB.
  9. Запустите командную строку или терминал в вашем каталоге ADB. Для пользователей Windows это можно сделать, удерживая клавишу Shift и щелкнув правой кнопкой мыши, а затем выбрав опцию «открыть командную строку здесь». (Некоторые пользователи Windows 10 могут увидеть замену «командной строки» на «PowerShell».)
  10. Находясь в командной строке или среде терминала, введите следующую команду: adb devices
  11. Это запустит демон ADB, если он еще не запущен, просто дождитесь его завершения. Если вы впервые запускаете ADB, вы также увидите на своем телефоне сообщение с просьбой авторизовать соединение с компьютером. Разрешите доступ к отладке по USB здесь.
  12. Теперь, если вы повторно запустите команду adb devices с шага 10, командная строка/терминал выведет серийный номер вашего устройства. Если да, то вы готовы двигаться дальше. Если нет, то драйверы USB, вероятно, установлены неправильно.
  13. Затем вам нужно будет найти имя пакета для приложения, которое вы хотите заморозить фоновые процессы. Вы можете сделать это, установив Инспектор приложений приложение на вашем телефоне.
  14. Вернитесь в командную строку и введите следующую команду: adb shell
  15. Теперь выполните следующую команду, чтобы освободить фоновые процессы приложения: cmd appops set RUN_IN_BACKGROUND ignore
  16. Если вы когда-нибудь захотите отменить только что внесенное изменение и снова разрешить фоновые процессы приложения, введите эту команду: cmd appops set RUN_IN_BACKGROUND allow
  17. Вы поймете, что это работает, если вы вернетесь к другому приглашению оболочки ADB и не выдадите сообщение об ошибке.

Объяснение

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

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

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

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