Регулярное нажатие на клавишу диспетчера приложений, а затем — кнопку «Закрыть все» (или аналогичной по функциональности) стало привычкой многих владельцев смартфонов ещё с незапамятных версий Android. На первый взгляд, это действие логично: на ПК с Windows закрытие работающих программ освобождает оперативную память и снижает загрузку процессора. Но действительно ли Android работает так, как мы ожидаем? Давайте разбираться.
Миф 1. Незакрытые приложения работают в фоне
Это неправда. Сейчас объясним почему — но сначала немного теории. Почти любое Android-приложение можно разделить на две части, видимую и невидимую пользователю. С видимой частью вы взаимодействуете после клика по иконке программы, а в оперативной памяти в это время хранятся графические ресурсы приложения и различные временные данные. Диспетчер приложений позволяет вам переключаться между последними запущенными программами без потери данных текущего сеанса работы с приложением. Разумеется, ровно до того момента, пока вам хватает оперативной памяти: как только запущенные программы используют всю доступную ОЗУ, операционная система начинает выгружать наиболее старые приложения, освобождая место для новых. И при выгрузке программы операционной системой, и при смахивании карточки вручную происходит одно и то же: из оперативной памяти выгружается видимая часть приложения, все несохранённые данные будут потеряны, а при следующем запуске программы вы увидите её главный экран. Полностью «забить» оперативную память смартфона, как это порой случается на ПК, — невозможно.
При всём этом, назвать «работающими» приложения из списка диспетчера нельзя. По сути, это всего лишь кэшированные данные, которые не выполняют никаких действий и хранятся в оперативной памяти только для того, чтобы вы могли быстро вернуться к работе.
Миф 2. Если закрывать «фоновые» приложения, производительность улучшится
Итак, то, что мы видим в списке диспетчера приложений, лишь вершина айсберга. Но ведь мы всё равно можем выиграть в производительности, выгрузив недавно запущенные приложения из оперативной памяти вручную? Нет, это тоже неправда. Очистка списка диспетчера вручную даст вам прирост оперативной памяти, в лучшем случае, в 100–150 MB. Возможно, немного больше, если в списке были ещё не выгруженные из ОЗУ игры. Для сравнения, даже работающий в фоне «жирный» Facebook занимает всего 200 MB.
Столь малый выигрыш, с учётом способности Android самостоятельно контролировать свободный объём памяти и выгружать давно не использованные программы, делает очистку списка недавно открытых программ бессмысленной, хотя и безвредной.
Куда на самом деле «утекает» память?
Несмотря на вышесказанное, объём свободной оперативной памяти смартфона с сотней установленных приложений будет намного меньше, чем у гаджета «из коробки». Так куда же «утекает» память? Чтобы ответить на этот вопрос, нужно разобраться в двух важных понятиях операционной системы: событиях и службах.
Событие (англ. event) — это своего рода триггер, привязанный к определённому действию определённой программы. События срабатывают при изменении некоторых внешних условий из достаточно обширного списка, в Android насчитывается несколько десятков различных триггеров. В их числе — включение смартфона, подключение зарядного устройства, монтирование карты памяти, переключение Bluetooth и многие другие. Просмотреть список всех событий можно в сторонних программах вроде Autostarts.
Службы (англ. services), они же сервисы, они же демоны, они же, иногда, процессы — та самая «невидимая» часть приложений, о которой мы говорили в самом начале статьи. Именно службы и работают в фоне, занимая оперативную память и расходуя заряд аккумулятора. Чаще всего службы запускаются и начинают свою работу при возникновении какого-либо события, но существуют и другие причины для работы программы в фоне. Например, любая программа может сколь угодно долго выполнять в свёрнутом режиме свою работу, пока в панели уведомлений «висит» её значок. Этим часто пользуются навигаторы, блокировщики рекламы и другие подобные приложения.
Просмотреть список запущенных служб можно на любом смартфоне, предварительно включив режим разработчика. Для этого в настройках гаджета откройте раздел «Об устройстве» и найдите в нём пункт «Номер сборки», после чего нажмите на него семь раз. Теперь с главного экрана настроек вы можете перейти в раздел «Параметры разработчика», где вам нужен пункт «Запущенные службы». В открывшемся списке будут показаны как системные, так и сторонние запущенные процессы, занимаемый ими объём ОЗУ, а также время непрерывной работы. Нажав на конкретный процесс, вы сможете увидеть список его служб.
Как действительно остановить «пожирание» ресурсов приложениями
Чтобы остановить службу, недостаточно просто смахнуть карточку программы в диспетчере. Вам придётся открыть список всех установленных приложений в настройках смартфона, перейти в сведения о программе и нажать кнопку «Остановить».
Впрочем, системные службы после такой остановки будут перезапущены практически сразу же, а сторонние — после наступления следующего события, которое тоже едва ли заставит себя долго ждать. В этом легко убедиться, проведя несложный эксперимент. Во многих смартфонах есть встроенные функции по «очистке» оперативной памяти — давайте воспользуемся ею на смартфоне Samsung. На первом скриншоте внизу видно, что в аппарате 1,4 GB свободной ОЗУ, но мы можем получить ещё 1,1 GB свободного пространства. Нажимаем на кнопку «очистить» и… получаем всё те же 1,4 GB свободной памяти! Проделав операцию несколько раз в течение дня, мы добились очистки памяти на 200–300 MB, но не более того. Зачем производители встраивают в прошивки столь бесполезные инструменты — мы не знаем. Возможно, свою роль играет глубокая убеждённость многих пользователей в необходимости такой очистки ОЗУ.
К счастью, есть несколько способов действительно эффективной борьбы с ненужными службами. Но для начала нужно выяснить, какие из них наиболее прожорливы. Для этого откройте в настройках смартфона статистику использования аккумулятора и посмотрите, какие программы находятся на верхних позициях доступных на вашем гаджете списков.
Способ 1. Приложения для заморозки. Частично (или даже полностью, если у вас есть root-доступ) автоматизировать остановку ненужных служб могут сторонние программы вроде Greenify. Программа позволяет выбрать приложения, которые вы хотите «гринифицировать» — их службы будут завершаться в автоматическом режиме после нажатия кнопки питания, но из-за ограничений Android на смартфонах без root-доступа это может занять какое-то время.
Способ 2. Удаление ненужных событий. Greenify действительно помогает «держать в узде» службы благодаря их постоянному завершению, но, если у вас есть права суперпользователя, правильным будет устранить первопричину запуска служб — ненужные события. Сделать это можно в программе Autostarts, о которой мы уже упоминали. Если вы решили воспользоваться этим способом, отключать события нужно очень осторожно. Во-первых, не стоит трогать системные события, если вы не уверены на 100% в их предназначении. Во-вторых, помните, что отключение событий сторонних программ может повлиять на их функциональность. В первую очередь, это касается уведомлений и различных автоматических действий, таких, например, как загрузка в Dropbox новых снимков.
Способ 3. Удаление приложений. Наиболее радикальный и действенный способ борьбы с прожорливыми службами — вовсе избавиться от соответствующих приложений. Например, вы немного потеряете от удаления того же Facebook, а вот экономия заряда аккумулятора и оперативной памяти окажется вполне заметной. Ещё раз посмотрите на список программ, которые оказались на верхних строчках статистики Android. Можете ли вы отказаться от некоторых из них? Вместо клиентов соцсетей, вы вполне можете пользоваться браузерами, а для других программ обычно несложно найти более экономные аналоги.
Заключение
За последние годы операционная система Google претерпела немало изменений и теперь её трудно упрекнуть в быстрой разрядке батарей смартфонов: контроль энергопотребления и использования оперативной памяти в последних версиях Android неплохо справляется со своими задачами. Несмотря на это, некоторые разработчики всё ещё умудряются создавать настоящих «франкенштейнов» и не слышали о таких понятиях, как оптимизация и экономия ресурсов. Способов борьбы с поведением таких программ не так много, но они есть — вам осталось выбрать наиболее подходящий для вас.