Disclamer:
В процессе разборок с энергопотреблением и памятью Android я встречал кучу возможных вариантов, всё далееописанное является 100% подтверждённым практикой, но учитывая моё нежелание трейсить сутками весь мусор из приложений - теоретическая часть может хромать. Всё далее описанное ясное дело требует рута и/или xposed, по хорошему и.
Основная часть:
Итак, учитывая современные тенденции и рост размера и потребляемых приложением ресурсов постоянно скачущий, у нас давно уже появилась новая проблема, и имя ей/им - таймеры и события.
И если по простому - чем больше приложений у вас ПРОСТО УСТАНОВЛЕНО(в кавычках на деле, см. далее) - тем больше дёргается телефон их запуская(или их части, но суть не меняется). То бишь у каждого приложения есть набор событий и таймеров по которым запускаются его части или основное приложение(тут это называется activity, ярлык в лаунчере запускает так называемый основной activity, но их как правило много и повешаных на разные события и таймеры, вешаются они при первом запуске приложения, с этим тоже есть ньюансы кстати, push уведомление - технически то же самое событие).
В итоге просто поставив набор приложений мы поимеем на сегодня кучу их событий завешанных на смену сети, пойманный wifi, просто таймеры итд, и соответствующее потребление, это первая часть проблемы.
Для блокировки таймеров и событий определённым приложениям или их частным activities есть куча полезного софта, но у всего есть общее - есть перекрёстные activity разных приложений, так, бесполезно блочить события для яндексовских приложений, или гугловских большей части, это приведёт либо к тому, что они будут постоянно будить друг друга, либо к сбою функционала, как то же кривое определение локации вообще(на примере основных google play services), либо необъяснимые тормоза части приложений которые эти события или связи используют. И частичные решения как лимит по таймерам уже Amplify делают только хуже в таком раскладе.
Допустим, то, над чем я в основном бегал - набор приложений яндекса, вы запускаете карты, а они дёргают ВСЕ приложения яндекса, вы запускаете транспорт или электрички - всё так же, дёргаются ВСЕ.
Это ведёт нас к следующему шагу - Greenify(и компания,они же "правильные" таск киллеры).
Приложение может быть Hibernated - остановлено, то есть с уведомлением, оно сохраняет свои данные и по сути выгружает процесс. Это основной метод работы тасккиллеров. И казалось бы что всё отлично, НО - смотрите пункт выше - они будут пробуждаться по куче событий и заново прибиваться автоматом при выключении экрана, что так же ведёт к бардаку и ещё большему потреблению. В Greenify есть неплохая система отсечки и разрешения экстренных пробуждений, но работает она учитывая пересечения и пробуждения приложениями приложений других плоховато. Однако мы возьмём за основу данного гайда как раз его, потому как именно его автор сделал следующий шаг.
Рассмотрим конкретнее что у нас появилось нового в андроиде и как это использовать в Greenify и для себя.
1. Shallow Hibernation - приложение НЕ ВЫГРУЖАЕТСЯ из памяти, но отсекаются все события. Вроде бы бонус, но учитывая форсированную невыгружаемость - растёт память, даже если у вас 4GB - один яндекс забьёт половину. Рекомендуется использовать такой режим для софта который нужен постоянно,но НЕ ДОЛЖЕН пробуждаться событиями - например браузер.
2. Doze Mode - схлопывание и редкая проверка всех типов уведомлений кроме телефонии, то бишь всех push и таймеров. На деле не особо полезен т.к. сильно зависит от сети и гуглосвязи, а именно на её поддержание и tcp с гуглом уходит в основном заряд итд, проявляется эффективно когда у вас уже over9000 приложений, сейчас же мы рассматриваем случай когда вообще всё не особо ресурсное.
3. Freeze - приложение замораживается и не видно в системе, т.к. не видно, не пытается будить его никто, его события и activities просто отсутсвуют. Это оптимально для всего что надо разово и не используется, как Карты например, но неудобно лезть в софт и каждый раз размораживать+ярлыки исчезают, искать ярлык.
Новый метод о котором статья - механизм фриза с автозапуском, основанный на Greenify + Island, требует Android 5+.
Итак, вот расклад в greenify для примера как нам автоматизировать запуск приложения из разморозки и использовать Greenify при том для авозаморозки.
На скрине приведён расклад простого типа - 17track имеет виджет и потому работает как background free без форсирования hibernate обычным методом, gmail меня достал и потому каждый раз прибивается обычным hibernate, при том ясное дело сохраняя уведомления и пуши которые будят его, chrome нужен мне как рабочий браузер, но срать на события не должен, так же должен быть в памяти постоянно для быстрого запуска. 24u - участник эксперимента, софт для кофейных автоматов для оплаты с карты.
Выбираем нужный софт, в меню на тип выбираем Deep Hibernation. Теперь со стороны Greenify у нас будет софт вместо гибернации морозиться по сути при выключении экрана и никак не проявляться в системе пока не вызовем разморозку, проделываем то же с яндексом например. Осталось создать ярлыки для запуска. Идём в Island в Mainland(сначала его ещё надо включить, требует root) и создаём ярлык(то что заморожено Greenify внизу)
Для примера добавим то же самое и на весь яндекс.
После чего смотрим на рабочий стол лаунчера и видим новые ярлыки, раскидываем их куда надо.
Помеченные значком Island(префикс - тут снежинка UTF дефолт, текстовый - выбирается в настройках Island) - приложения которые автоматом при неактивности и выключении экрана морозятся и эти ярлыки являются ярлыками разморозить+запустить, и ВООБЩЕ НИКОГДА не работают по данной причине в фоне и не пробуждаются по событиям.
Результат - куда меньшее использование памяти, куда меньше батареи.
Работает данный метод с приложениями которые постоянно не нужны. Убивается автообновление таких приложений, надо их сначала запустить с данных ярлыков чтобы появились хотя бы в маркете, убивается связь - то есть если у вас так выставлен браузер - в списке браузеров его не будет пока не запустим разок руками после включения экрана.
Summary:
Итог - есть способ автозаморозки и авторазморозки, который позволяет избавиться от мусорных приложений которые нужны только в активном режиме, от их мусорных активностей и пробуждений, а так же от кросс-пробуждений, но у него есть и недостатки с обновлениями, например. Учитывая что таких приложений большая часть - он может быть большей части владельцев не особо сильных телефонов полезен.
P.S. На скринах стандартный Android, все настройки выполнены GravityBox.