java - Android上的图片保存在哪里?

标签 java android media image

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

将它们保存在公共(public)文件夹中的 SD 卡上

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

将它们保存在 SD 卡上的非公共(public)文件夹中

  • 使用卸载时无法释放的空间
  • 偷偷使用 SD 卡上的空间

将它们保存在应用程序中

  • 过度扩大应用程序大小

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

最佳答案

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

context.getCacheDir()

这个目录是应用程序私有(private)的,卸载时会被删除,此外,如果设备空间不足,系统可以从这个目录中删除。

请注意,尽管文档说:

you should not rely on the system deleting these files for you; you should always have a reasonable maximum, such as 1 MB, for the amount of space you consume with cache files, and prune those files when exceeding that space

如果您需要大量空间并且宁愿使用 SD 卡可以调用

getExternalCacheDir()

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

Environment.getExternalStorageState()

在尝试写入之前。

关于java - Android上的图片保存在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847664/

相关文章:

java - 在RESTEasy Client中提取JSON响应的特定节点

android - 从在 Android 上运行的 Open Images 数据集中获取预训练的 Inception v3 模型

android - 如何获取已安装媒体播放器的列表

python - 用python计算电影文件中的音轨

java - 整数和长整型转换

java - 在 Java 8 中,如何从 Stream< 获取 Stream<T>?扩展集合<T>>?

java - 在 java 应用程序中禁用 jaspersoft 日志记录

java - 尽管返回相反的结果,但表未在更新时更新

java - 在android中使用volley发送json数组将mysql中的多条记录添加到php脚本

audio - WAV文件中的声音/静音