Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recommended path for caching images on external memory / sd card

When I look at my sd card root directory in Android file transfer or Astro file manager it's a mess because apps are storing files all over the place.

As developers we follow best practice by caching images/files etc to make our apps quicker and we use Environment.getExternalStorageDirectory() to get the root of the external storage (not hardcoding /sdcard). But what should go next? ideal world we'd follow a convention for dumping our cached files on the open field that is the external storage?

Here's a couple of the options I see from my own device/experience:

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

I currently prefer the first option as hidden by default from on device file managers.

Does anyone know of recommendations from Google or conventions followed by several popular/big names apps? or reasons this is a bad idea?

like image 915
scottyab Avatar asked Apr 22 '13 20:04

scottyab


1 Answers

According to the Developer Docs

Saving cache files

If you're using API Level 8 or greater, use getExternalCacheDir() to open a File that represents the external storage directory where you should save cache files. If the user uninstalls your application, these files will be automatically deleted. However, during the life of your application, you should manage these cache files and remove those that aren't needed in order to preserve file space.

If you're using API Level 7 or lower, use getExternalStorageDirectory() to open a File that represents the root of the external storage, then write your cache data in the following directory:

/Android/data/<package_name>/cache/

The <package_name> is your Java-style package name, such as "com.example.android.app".

More info here

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

Hope it helps

like image 150
Andres Avatar answered Oct 13 '22 01:10

Andres