Рекомендуемый путь для кеширования изображений на внешнюю память / SD-карту

Когда я смотрю на корневой каталог моей SD-карты в программе передачи файлов Android или в файловом менеджере Astro, это беспорядок, потому что приложения хранят файлы повсюду.

Как разработчики, мы следуем передовой практике, кэшируя изображения / файлы и т. Д., Чтобы ускорить работу наших приложений, и мы используем Environment.getExternalStorageDirectory() для получения корневого каталога внешнего хранилища (а не жесткого кодирования / SD-карты). Но что делать дальше? идеальный мир, мы бы следовали соглашению о сбросе наших кэшированных файлов в открытое поле, которое является внешним хранилищем?

Вот несколько вариантов, которые я вижу на собственном устройстве / опыте:

  • /.cache/app_name/
  • /.app_name/
  • /cache/<app_name>/
  • /data/<app_name>/
  • /com.package.name/
  • /app_name/

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

Кто-нибудь знает о рекомендациях от Google или соглашениях, которым следуют несколько популярных / громких приложений? или причины, по которым это плохая идея?


person scottyab    schedule 22.04.2013    source источник
comment
Я не знаю, это лучшая практика, но обычно я использую Context.openFileOutput с MODE_PRIVATE. Поскольку он не слишком большой по размеру, я имею дело с ним, это не должно быть проблемой.   -  person harism    schedule 23.04.2013
comment
@harism спасибо, но это не связано с вопросом, который я задаю.   -  person scottyab    schedule 23.04.2013


Ответы (2)


Согласно документации разработчика

Сохранение файлов кеша

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

Если вы используете API уровня 7 или ниже, используйте getExternalStorageDirectory (), чтобы открыть файл, представляющий корень внешнего хранилища, а затем запишите данные кеша в следующий каталог:

/ Android / data / ‹имя_пакета> / cache /

‹Package_name> - это имя вашего пакета в стиле Java, например com.example.android.app.

Больше информации здесь

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

Надеюсь, это поможет

person Andres    schedule 25.04.2013
comment
getExternalCacheDir () - это то, что я искал, спасибо. Плюс выносит вопрос где на SD немой. - person scottyab; 01.05.2013
comment
Любая идея, почему вызов mkdir в каталоге внешнего кеша ничего не делает? У меня android.permission.WRITE_EXTERNAL_STORAGE в манифесте - person David Callanan; 08.12.2019
comment
Изменить: Nvm сработало, мне пришлось повторно подключить телефон, чтобы появились обновления - person David Callanan; 08.12.2019

В руководстве разработчика говорится, что файлы должны храниться в каталог /Android/data/<package_name>/files/, который, по-видимому, является местом, где несколько приложений хранят свои файлы. В качестве дополнительного преимущества файлы здесь будут удалены после удаления вашего приложения, и это не загромождает корень. Я бы подумал, что размещение файлов кэша в /Android/data/<package_name>/cache/, вероятно, будет хорошим вариантом!

person Alex Curran    schedule 25.04.2013