在安卓系统上保存图片的什么地方?

2022-09-01 08:50:59

我的应用程序使用了很多从互联网上下载并本地缓存在Android手机上的图片。我想知道,保存这些图片的正确方法是什么。我看到有几种方式,并不完全令人满意。

将它们保存在SD卡上的公用文件夹中

  • 耗尽卸载时无法释放的空间
  • 用户可以在图库中查看图片
  • 需要在SD卡根目录上有一个文件夹(您在浏览手机时实际上可以看到它)

将它们保存在非公用文件夹的SD卡上

  • 耗尽卸载时无法释放的空间
  • 秘密使用SD卡上的空间

将它们保存在应用程序中

  • 过度夸大应用程序大小

在本地保存应用程序图像的正确方法是什么,以免分散用户的注意力,也不会在任何地方留下垃圾?


答案 1

您的最佳解决方案是使用:

context.getCacheDir()

此目录是应用程序的专用目录,将在卸载时删除,此外,如果设备空间不足,系统可以从此目录中删除。

请注意,文档说:

您不应该依赖系统为您删除这些文件;对于缓存文件占用的空间量,应始终具有合理的最大值(如 1 MB),并在超过该空间时修剪这些文件

如果您需要大量空间,并且宁愿使用SD卡,则可以致电

getExternalCacheDir()

相反。这些也会在卸载时被删除,但系统不会监视外部存储中的可用空间,因此如果空间不足,则不会自动删除这些文件。如果使用此选项,您还应该检查外部存储是否可用

Environment.getExternalStorageState()

在尝试写入它之前。


答案 2

如果将图像放在隐藏的目录(即带点前缀)中,则可以从 MediaScanner 中隐藏图像,例如 ./sdcard/.donotscan/

更新:正如romainguy在Twitter上提到的,如果你把一个名为dir的文件放进去,这也有效。.nomedia


推荐