当前位置: 首页 > 面试题库 >

在Android上的哪里保存图片?

皇甫飞飙
2023-03-14
问题内容

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

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

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

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

  • 占用了无法在卸载时释放的空间
  • 秘密使用SD卡上的空间

将它们保存在应用程序中

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


问题答案:

最好的解决方案是使用:

context.getCacheDir()

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

注意,尽管文档说:

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

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

getExternalCacheDir()

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

Environment.getExternalStorageState()

在尝试写入之前。



 类似资料:
  • 我最近有一台mac电脑,我根本不习惯在mac电脑上开发。 我有MAMP Pro1.9.6.1。我在上找到了这个: 我把他们的名字都改了。重新启动MAMP。它装载顺利(我知道奇怪吧?)。我使用的是PHP版本5.2。 所有这些文件现在都是不同的名称(一个接一个地进行消除过程)。所以我想重启苹果电脑。同样,MAMP加载没有问题,即使所有的文件都被移动了。在灯上,这甚至不会加载。但是要么有另一个我丢失的文

  • 脱机工作时,适用于 Windows 的独立 Postman 客户端将集合保存在何处? 澄清一下,我想找到当禁用在线同步时Postman默认保存集合文件的位置。我没有尝试将我的集合导出为JSON文件。 我查看了、“我的文档”和“程序文件”,但我看不到Postman将收集的数据保存在哪里。

  • 问题内容: 创建首选项活动时,我在xml文件中定义所有首选项。每个首选项都有在此xml中定义的键。但是,当我访问首选项时,我写道: 有什么方法可以避免以硬编码方式引用“ foo_key_defined_in_xml”?也许有可能以R样式方式引用它(而不是引用字符串)? 问题答案: 我发现可以将键存储在 strings.xml中, 并像其他所有值一样从 preferences.xml 引用它们。 在

  • 如果我试图在不调用构造函数的情况下创建映射,则该对象不可用: 出于好奇,我想知道条目存储在哪里,但构造函数似乎没有添加属性: 你知道吗?

  • 问题内容: 如果我们为特定的设置,java如何为它设置时间,例如,如果我们将其设置为时区,它怎么知道确切的时区,它在哪里维护? 提前致谢 问题答案: 时区数据源是特定于实现的,但是我相信大多数实现都使用IANA数据库(即zoneinfo,aka tz,aka Olson,aka TZDB)。 请注意,PST实际上不是时区-它是时区的“一部分”。时区为“太平洋时间”,通常以ID标识。

  • 我使用Spring Tools来开发我的网站。在这个网站上,管理员可以上传图像和其他文件,如PDF和CSV,客户可以稍后下载。 使用Spring工具时,我将目标文件夹设置为static/images/以上载新图像,这非常有效。但是在我的Linux服务器上部署了这个jar之后,Spring boot找不到静态文件夹,所以我使用了我发现的这个函数:如何动态获取Spring boot应用程序jar父文件