Заморожування фонових процесів без рутування (Android 7.0+)

У цьому посібнику показано, як заморозити фонові процеси будь-якої програми на Android 7.0 і 7.1 Nougat без root-прав за допомогою прихованої команди ADB.

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

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

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


Навчальний посібник із обмеження фонових процесів

Вимоги:

  • Пристрій Android Nougat (7.0 або 7.1).
  1. Установіть USB-драйвери для вашого конкретного пристрою OEM (Google надає список деяких універсальні драйвери USB тут).
  2. Завантажити Двійковий файл ADB для вашої конкретної ОС (вікна, Мак, Linux). Ці посилання завжди вказуватимуть на останню версію двійкового файлу.
  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, повністю припинять синхронізацію у фоновому режимі, доки ви їх не відкриєте, і якщо це те, до чого ви прагнете, я впевнений, що ви не заперечуєте. Але не дивуйтеся, якщо ваші електронні листи чи повідомлення затримаються, якщо ви запустите цю команду в програмі, яка залежить від фонових отримувачів.