В этом руководстве показано, как заморозить фоновые процессы любого приложения на 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)
- Установите драйверы USB для вашего конкретного OEM-устройства (Google предоставляет список некоторых универсальные драйвера USB здесь).
- Загрузите Бинарный файл АБР для вашей конкретной ОС (Окна, Мак, Линукс). Эти ссылки всегда будут указывать на последнюю версию двоичного файла.
- Извлеките содержимое ZIP-файла в легкодоступную папку на вашем компьютере.
- Перейдите в приложение «Настройки» на своем телефоне и нажмите «О телефоне».
- Найдите номер сборки и нажмите на него 7 раз, чтобы включить режим разработчика.
- Вернитесь в главное меню «Настройки» и войдите в «Параметры разработчика», чтобы включить режим отладки по USB.
- Подключите телефон к компьютеру и переведите его из режима «только зарядка» в режим «передача файлов (MTP)». Это не обязательно на каждом устройстве, но на многих устройствах это требуется в качестве меры безопасности, прежде чем разрешить работу ADB.
- Вернитесь на компьютер и перейдите в каталог, в который вы распаковали двоичный файл ADB.
- Запустите командную строку или терминал в вашем каталоге ADB. Для пользователей Windows это можно сделать, удерживая клавишу Shift и щелкнув правой кнопкой мыши, а затем выбрав опцию «открыть командную строку здесь». (Некоторые пользователи Windows 10 могут увидеть замену «командной строки» на «PowerShell».)
- Находясь в командной строке или среде терминала, введите следующую команду:
adb devices
- Это запустит демон ADB, если он еще не запущен, просто дождитесь его завершения. Если вы впервые запускаете ADB, вы также увидите на своем телефоне сообщение с просьбой авторизовать соединение с компьютером. Разрешите доступ к отладке по USB здесь.
- Теперь, если вы повторно запустите команду adb devices с шага 10, командная строка/терминал выведет серийный номер вашего устройства. Если да, то вы готовы двигаться дальше. Если нет, то драйверы USB, вероятно, установлены неправильно.
- Затем вам нужно будет найти имя пакета для приложения, которое вы хотите заморозить фоновые процессы. Вы можете сделать это, установив Инспектор приложений приложение на вашем телефоне.
- Вернитесь в командную строку и введите следующую команду:
adb shell
- Теперь выполните следующую команду, чтобы освободить фоновые процессы приложения:
cmd appops set
RUN_IN_BACKGROUND ignore - Если вы когда-нибудь захотите отменить только что внесенное изменение и снова разрешить фоновые процессы приложения, введите эту команду:
cmd appops set
RUN_IN_BACKGROUND allow - Вы поймете, что это работает, если вы вернетесь к другому приглашению оболочки ADB и не выдадите сообщение об ошибке.
Объяснение
Как именно работает эта команда, так это то, что она позволяет вам ограничить скрытое разрешение, которое обычно недоступно пользователю в приложении «Настройки». Это разрешение называется разрешением RUN_IN_BACKGROUND, и единственный способ его изменить — использовать «cmd appops», который представляет собой интерфейс командной строки для «App Ops» — системы управления разрешениями Google для пользователей.
Google добавил эту скрытую команду ADB, которая позволяет вам запретить любому приложению получать неявные широковещательные намерения (т. приложение просыпается в фоновом режиме), а также запрещает этим приложениям планировать фоновые службы без использования JobScheduler (т. приложение просыпается в неподходящее время, разряжая батарею). На самом деле эта команда предназначена только для разработчиков, желающих смоделировать работу своего приложения в условиях нехватки памяти, но, к счастью, мы можем использовать ее для себя.
Удалив зависимости от фоновых служб приложения и неявных приемников широковещательной рассылки, зарегистрированных в манифесте, разработчики могут оптимизировать свое приложение для лучшей работы на устройствах с низким объемом памяти. Google заявляет, что приложения, оптимизированные для устройств такого типа или приложения с нехваткой памяти, могут улучшить как производительность, так и удобство использования. На выставке Google I/O в этом году компания объявила модифицированная версия Android под названием Android Go, которая будет использоваться для смартфонов с очень низким объемом памяти, поэтому мы предполагаем, что эта команда будет полезна разработчикам, нацеленным на эту платформу.
В любом случае эта команда может быть весьма полезной для обычного пользователя, но будьте осторожны с ограничениями здесь. Такие приложения, как Hangouts или Facebook, полностью перестанут синхронизироваться в фоновом режиме, пока вы их не откроете, и, если это то, к чему вы стремитесь, я уверен, вы не возражаете. Но не удивляйтесь, если ваши электронные письма или сообщения будут задерживаться, если вы запустите эту команду в приложении, которое зависит от фоновых получателей.