Този урок ви показва как да замразите фоновите процеси на всяко приложение на 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).
- Инсталирайте USB драйверите за вашето конкретно устройство OEM (Google предоставя списък с някои универсални USB драйвери тук).
- Изтеглете ADB двоичен файл за вашата конкретна ОС (Windows, Mac, Linux). Тези връзки винаги ще сочат към най-новата версия на двоичния файл.
- Извлечете съдържанието на 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 shell и не ви даде съобщение за грешка.
Обяснение
Как точно работи тази команда е, че ви позволява да ограничите скрито разрешение, което обикновено не е достъпно за потребителя в приложението Настройки. Това разрешение се нарича разрешение RUN_IN_BACKGROUND и единственият начин, по който може да бъде модифицирано, е да се използва "cmd appops", който е интерфейсът на командния ред за "App Ops" - системата на Google за управление на разрешения, обърната към потребителя.
Google добави тази скрита ADB команда, която ви позволява да ограничите всяко приложение да получава имплицитни намерения за излъчване (т.е. приложението се събужда във фонов режим) и също така предотвратява тези приложения да планират фонови услуги, без да използват JobScheduler (т.е. приложението се събужда в неподходящ момент, изтощавайки батерията ви). Тази команда всъщност е предназначена за използване само от разработчици, които искат да симулират как тяхното приложение ще работи при условия на ниска памет, но за щастие можем да я използваме за наша собствена употреба.
Чрез премахване на зависимостите от фоновите услуги на приложението и регистрираните в манифест неявни излъчващи приемници, разработчиците могат да оптимизират приложението си, за да работи по-добре на устройства с малко памет. Google казва, че приложенията, оптимизирани за този тип устройства или такива, които са в условия на ниска памет, могат да подобрят както производителността, така и потребителското изживяване. На Google I/O тази година компанията обяви модифицирана версия на Android, наречена Android Go, който ще се използва за смартфони с много малко памет, така че предполагаме, че тази команда би била полезна за разработчици, насочени към тази платформа.
Във всеки случай тази команда може да бъде доста полезна за средния потребител, но внимавайте какво ограничавате тук. Приложения като Hangouts или Facebook напълно ще спрат да се синхронизират във фонов режим, докато не ги отворите, което, ако това е, към което се стремите, тогава съм сигурен, че нямате нищо против. Но не се изненадвайте, когато вашите имейли или съобщения се забавят, ако изпълните тази команда на приложение, което зависи от фонови приемници.