在外部存储/SD卡上缓存图像的推荐路径

6
当我在Android文件传输或Astro文件管理器中查看我的SD卡根目录时,由于应用程序将文件存储到各个位置,它是一团糟。
作为开发人员,我们通过缓存图像/文件等来遵循最佳实践,以使我们的应用程序更快,并使用Environment.getExternalStorageDirectory()来获取外部存储的根目录(不是硬编码/ sdcard)。但接下来该怎么做呢?在理想的世界中,我们应该遵循一个约定,在外部存储的空场上倾倒我们的缓存文件?
这里是我自己设备/经验中看到的一些选项:
  • /.cache/app_name/
  • /.app_name/
  • /cache/<app_name>/
  • /data/<app_name>/
  • /com.package.name/
  • /app_name/
我目前更喜欢第一种选项,因为默认情况下在设备文件管理器上是隐藏的。
有没有人知道Google的建议或多个流行/大型应用程序遵循的惯例?还是说这是个坏主意?

我不确定这是否是最佳实践,但通常我使用Context.openFileOutput与MODE_PRIVATE进行操作。由于我处理的文件大小不大,据我所知就不应该存在问题。 - harism
@harism 谢谢,但那与我所问的问题无关。 - scottyab
2个回答

9
根据开发者文档
保存缓存文件
如果您使用API Level 8或更高版本,请使用getExternalCacheDir()打开一个File,该文件表示外部存储目录,在此处保存缓存文件。如果用户卸载您的应用程序,这些文件将自动删除。但是,在应用程序的生命周期内,您应管理这些缓存文件,并删除那些不需要的文件以保留文件空间。
如果您使用API Level 7或更低版本,请使用getExternalStorageDirectory()打开一个File,该文件表示外部存储的根目录,然后在以下目录中编写缓存数据:
/Android/data//cache/ 是您的Java样式包名称,例如“com.example.android.app”。
更多信息请参见此处。

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

希望它有所帮助

getExternalCacheDir() 就是我在寻找的东西,谢谢。此外,这也解决了“在SD卡上的哪个位置”的问题。 - scottyab
有没有想过为什么在外部缓存目录上调用mkdir不起作用?我在清单文件中有android.permission.WRITE_EXTERNAL_STORAGE - David Callanan
编辑:没事了,我不得不重新插拔手机才能看到更新。 - David Callanan

1

开发者指南指出,文件应存储在目录/Android/data/<package_name>/files/中,这似乎是许多应用程序存储其文件的位置。作为额外的好处,这里的文件将在卸载应用程序时被删除,不会使根目录混乱。我认为将缓存文件放在/Android/data/<package_name>/cache/中可能是一个很好的选择!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接