Память Андроид: очистить кэш и данные приложений

Сегодня: 21.07.2018, Суббота

Распределение памяти Андроид

Память мобильных устройств - вопрос, интересующий многих владельцев Android-смартфонов. Объём доступной к использованию свободной памяти, предоставляемый производителями телефонов, за последние годы существенно увеличился, но объём данных, которые хранит пользователь в носимых гаджетах, растёт ещё быстрее.

В данной статье мы поговорим об одном из способов, позволяющих освободить место в памяти Андроид смартфона. Ниже речь пойдёт о том, что такое очистка кэша и что происходит при нажатии на кнопку Очистить данные у приложений в Android OS.

Накопитель заполнен на 75%. Перенести данные на SD-карту

Со временем, когда объём хранимой на смартфоне информации сильно увеличивается, пользователь может столкнуться с проблемой нехватки памяти на телефоне. Уведомление, оповещающее о том, что память заполнена, может выглядеть по-разному. Вот один из примеров:

Накопитель заполнен на 75%

О чём говорит это предупреждение? В данном случае система предупреждает, что на внутренней памяти устройства осталось меньше 25% свободного пространства. По большому счёту, это не критическая ошибка, доступная память ещё в наличии, но нужно иметь ввиду два момента:

  1. Свободное место на телефоне скоро может закончиться, чтобы этого не произошло в самый неподходящий момент, заранее позаботьтесь об освобождении занятого простарнства.
  2. Для комфортной работы с ОС желательно держать свободным некоторый объём памяти внутреннего накопителя. Это обеспечит поддержание уровня быстродействия и плавности в повседневном использовании.

В статье Память на Android. Все разделы памяти Андроид устройств мы подробно останавливались на разборе всех типов памяти Android OS. Там же приводилась следующая строчка:

Внутренняя память устройства (Internal phone storage) - та часть модуля памяти смартфона, которая не занята системными разделами и доступна пользователю для размещения приложений, медиа-контента и документов. Часть памяти, на которую устанавливается софт, определяется как раздел Data, а часть, занятая пользовательскими файлами - как User.
Зачастую реальной границы между этими областями нет, и тогда распределение памяти зависит только от нужд владельца устройства.

Если учесть это в рамках текущей публикации, то делаем вывод, что система может оповещать как о нехватке памяти на внутреннем накопителе в целом, так и конкретно о нехватке памяти в разделе Data. Разница в следующем:

  • Если на смартфоне требуется освободить место в общем на внутреннем накопителе, то мы можем принести в жертву либо пользовательские данные (музыка, фотографии, видео, документы), либо приложения и файлы связанные с ними.
  • Если на смартфоне необходимо освободить выделенный раздел Data, то удаление фотографий или музыки не приведёт ни к какому результату. В этом случае требуется оптимизация именно памяти, занятой программами и играми. Это важно понимать.

Если с удалением медиафайлов и документов всё более или менее понятно, то вопрос оптимизации памяти, занимаемой приложениями, рассмотрим подробнее.

Будьте осторожны! Все манипуляции с данными на своих устройствах вы производите исключительно на свой страх и риск! Ни администрация ресурса, ни автор статьи не несут ответственности за возможную потерю данных, вызванную неточными действиями пользователя или спецификой работы приложения

Из чего состоят приложения на Андроид

В первую очередь, стоит указать, что каждое Андроид приложение условно можно разделить на три части по типу используемых файлов:

  1. Программа. Это само приложение, apk-файл.
  2. Данные приложения. Это пользовательская информация, которая сохраняется в процессе всего периода жизни той или иной программы на смартфоне. Данные вносятся в программу пользователем или по его прямому запросу.
  3. Кэш приложения. Это временно хранимые файлы. Грубо говоря, это та же пользовательская информация, с той лишь разницей, что её утрата не влияет на работоспособность приложения. Программа способна заполнить кэш нужными данными самостоятельно в процессе работы.

Теперь определим, где хранится программа, её данные и кэш приложения на Андроид.
Если продолжить отсылку к упомянутой выше статье о памяти на Android и воспользоваться классификацией разделов из неё, то можно смело утверждать, что и сама программа, и данные пользовательских приложений, и их кэш хранятся в Энергонезависимой памяти -> в Перезаписываемом разделе EEPROM -> Internal phone storage (внутренний накопитель) -> Data (то есть, данные).
Мы в данном случае не рассматриваем системные приложения, так как они расположены в Прошиваемом разделе System, и, без наличия root-прав, недоступны для удаления.
То есть, из вышесказанного делаем вывод, что и программа, и её данные с кэшем занимают память в разделе Data, а это значит, что очистка любой из этих составляющих, освобождает пользовательское место и, собственно, частично решает проблему нехватки памяти на Андроид устройстве.
Взглянем на все составные части приложений Android детальнее.

Удаление приложения на Андроид

Сначала отметим, что сама программа в системе Андроид - это не только apk-файл. Кроме него могут быть задействованы дополнительные библиотеки и дополнительные технические* файлы программы.
Под техническими файлами мы понимаем те ресурсы, которые хранятся вне исполнительного файла, но служат для обеспечения выполнения приложением своей работы.
И исполнительный файл программы, и сопутствующие ему файлы чаще всего располагаются в следующем каталоге от корня файловой системы:

/data/app/

В папке app располагается каталог приложения, в корне которого находится сам apk-файл, и папка lib, в которую помещаются системные библиотеки, если таковые имеются. В зависимости от программы, рядом с apk-файлом могут быть и папки с другим названием.

Каталог /data/app/ с программами в Андроид

Содержимое папки с программой в каталоге /data/app/ хранится там на протяжении всего времени работы от момента установки до момента деинсталляции приложения.

То есть, при удалении приложения с телефона стирается именно папка программы по пути /data/app/ со всем её содержимым: и apk-файл, и системные файлы программы.

Очистить данные приложения Андроид

Теперь, что касается данных приложения. Данные - это, в первую очередь, пользовательская информация. В общем случае хранятся данные приложения в следующем каталоге:

/sdcard/Android/data/

В частном случае это может быть немного иной путь, что, в частности, соответствует общему каталогу, отличаясь только отображением иерархии каталогов:

/storage/emulated/0/Android/data/

Этой папкой возможные места хранения данных приложения на Андроид не ограничиваются. Часто программа при установке создаёт свой каталог в корне карты памяти: либо внутренней, либо внешней. Именно в этих папках программа сохраняет информацию, которую:

  • вводит пользователь;
  • скачивает само приложение по запросу юзера.

Кроме вышеперечисленных путей есть ещё один каталог, о котором нужно упомянуть отдельно. Речь пойдёт о папке obb, которая расположена по пути:

/sdcard/Android/obb/

Эта папка служит специально для того, чтобы там хранился так называемый кэш игр. Немножко подробнее остановимся на том, что это такое и для чего используется.

Папки data и obb в каталоге Android

Игровая индустрия развивается достаточно быстро. Вместе с этим растут и требования к аппаратной части, в том числе и к дисковому пространству. Всё это актуально и для Android OS. Серьёзные игры с красивой прорисовкой графики и серьёзным геймплеем требуют хранения большего объёма системной информации. Всё это привело к тому, что у многих игр появился ярко выраженный кэш. Но, как и в разных способах установки программ, есть несколько путей и в том, как поместить кэш игры в папку /Android/obb/:

  1. Если объём кэша не очень велик, то разработчик может заархивировать данные, поместить их непосредственно в apk-файл или просто привязать загрузку кэша к загрузке самой игры. При установке такой игры кэш самостоятельно распакуется в нужную папку. Эту возможность разработчики иногда используют как дополнительную защиту от взлома, так как в случае, если вы скачали игру не из магазина Google Play, а из альтернативного источника, игра при запуске не найдёт кэш и откажется запускаться.
  2. Если в apk-файле всех файлов игры не размещено, то, по умолчанию, кэш игры скачивается через интернет автоматически самим приложением при его первом запуске.
    Нужно отметить ещё одну причину, по которой кэш игр не очень удобно упаковывать изначально в apk-файл. Дело в том, что, зачастую, кэш для разных телефонов будет отличаться в зависимости от разрешения экрана, типа видеочипа и процессора, а иногда и от модели смартфона. А если скачивать кэш при первом запуске игры, то не придётся передавать на смартфон пользователя те данные, которые не подходят для его устройства.
  3. Всё*, что скачивается конкретным приложением, можно скачать вручную. То есть, кэш игры можно качать не через саму игру, а отдельно. Это возможно в том случае, если кто-нибудь скачает подходящий вам кэш (по разрешению экрана, типу видеоускорителя и так далее) и выложит его в сеть. Тогда нам останется скачать архив с кэшем и поместить его в нужный каталог: obb или data, в зависимости от игры (в частных случаях путь хранения кэша может отличаться и указывается дополнительно).

Если вы скачиваете кэш игры отдельно, то советуем поступать следующим образом: сначала установить игру, затем запустить её и дать время для запуска загрузки кэша из сети, а спустя несколько секунд прервать загрузку и подложить имеющийся кэш вручную. Таким образом мы избегаем ошибки в выборе каталога для размещения кэша.

Теперь кому-то может показаться странным, почему информацию о папке с кэшем мы поместили в главу о данных Android, а не о самом кэше. И вот в чём дело. По сути, кэш игры так называют потому, что он скачивается ею при установке. Эти данные являются кэшем только для самого приложения и с точки зрения пользователя. Для операционной системы Андроид файлы кэша игры являются данными приложения и при очистке кэша не затираются (ниже повторим об этом). А когда же затираются?

При нажатии кнопки Очистить данные в менеджере приложений Андроид происходит удаление всей пользовательской информации конкретной программы, в том числе и кэша игр (опять же, в общем случае). То есть, после очистки данных приложения оно возвращается в такое же состояние, как и в момент сразу после установки.

Также при установке игр с кэшем необходимо учитывать ещё один нюанс: при удалении такой игры следует вручную проверить, удалился ли кэш автоматически. Если этого не произошло, то папку с кэшем можно удалить вручную любым файловым менеджером.

Очистить кэш приложения Андроид

Для начала определим, что такое кэш приложения:

Кэш - это хранилище информации, буфер, содержащий данные, к которым должен быть обеспечен оперативный доступ

Слово "кэш" позаимствовано от английского слова "cache", которое, в свою очередь, произошло от французского "cacher", что значит "скрывать", "прятать".
Теперь о том, для чего нужен кэш. В кэше не хранится действительно важная информация, сюда записываются файлы, обращение к которым возможно особенно часто. Сделано это для увеличения скорости доступа. Приведём пример, описывающий работу кэша браузера:

Мы заходим на определённую статью на сайте, которая содержит, допустим, 5 картинок. Для того, чтобы отобразить эти картинки пользователю, браузер скачивает их превьюшки и сохраняет на жёсткий диск или в память телефона. Теперь, когда мы зайдём на эту же статью в следующий раз, браузеру не придётся повторно качать те же изображения, он выдаст их нам из кэша, что позволяет увеличить общую скорость загрузки страницы.

Но у кэша существует естественный недостаток: он хранит как действительно нужные, регулярно вызываемые файлы, так и те, которые были показаны лишь раз и больше пользователю не понадобятся. Чтобы избавиться от ненужной информации, занимающей место, существует опция, которая позволяет очистить кэш приложения.

Давайте рассмотрим пример, который объясняет смысл понятий программа, данные приложения и кэш приложения простыми словами.

Предположим у нас, как у пользователя, в офисе сидит секретарша офис-менеджер Татьяна. Татьяна - это, в нашем случае, приложение. На рабочем столе Татьяны стоит компьютер, которым офис-менеджер постоянно пользуется - это данные приложения. Кроме компьютера на рабочем столе всегда находятся ручка, блокнот, степлер, дырокол и калькулятор - это кэш нашего приложения.

В какой-то момент времени мы переезжаем в другой офис (прошивка или смена устройства), он больше и просторнее, но в нём пока нет ничего. В первую очередь, приходит офис-менеджер (установка программы). Однако, она пока не может работать, у неё нет данных, поэтому мы устанавливаем ей компьютер (подгрузка данных приложения). Работа закипела. Но пока стол пуст (кэш очищен), скорость работы офис-менеджера ниже прежней: каждый раз, чтобы скрепить документы или посчитать большие суммы, ей приходится отвлекаться на поиски нужных инструментов. Поэтому, постепенно на столе у Татьяны вновь появляется степлер и кулькулятор (заполнение кэша). А вот блокнот, оказывается, нужен не так часто, поэтому он может лежать в выдвижном шкафу, а на освободившееся на столе место мы поместим календарь, обращение к которому происходит чаще. Благодаря этому Татьяна теперь справляется со своими задачами ещё быстрее.

Это грубый пример того, как очистка кэша благотворно влияет на работу приложения.

Кэш приложения также может размещать по разным папкам. Чаще всего это одноимённый каталог cache, который расположен, например, в папке приложения из /Android/data/

Папка cache для хранения кэша приложения Андроид

При нажатии кнопки Очистить кэш в менеджере приложений Андроид происходит удаление всей временной информации, к которой программа обращалась ранее. В ходе дальнейшей работы с программой наполнение кэша происходит заново.

То есть, если на нашем смартфоне заканчивается доступная память на накопителе, именно очистка кэша позволит нам освободить некоторый объём памяти для записи новых данных. Перед очисткой кэша убедитесь, что данная процедура безболезненна для конкретной программы и не приведёт к удалению важной информации.

Соответственно, отвечая на вопрос: "Удалится ли кэш игры при очистке кэша приложения?" - можно сказать, что нет, содержимое папки /Android/obb/ в общих случаях не затрагивается, если иное не предусмотрено разработчиком системы или приложения.



Добавить комментарий