Android-用于存储不确定数量和大小的图像的设计模式

Android-用于存储不确定数量和大小的图像的设计模式,android,Android,我正在尝试决定将作为即时消息一部分发送到应用程序中的图像存储在何处。这些消息在最初收到后的一段很长时间内都可以在对话历史视图中查看。您可以想象任何数量的其他用例都会有类似的需求,因此这里的问题是“存储不确定数量和大小的图像的最佳实践” 假设 SQLite存储显然是一个不好的选择,因为映像大小不是 有界 将这些图像公开给其他应用程序或由MediaScanner发现既不是可取的,也不是不可取的。在这一点上我们被认为是完全中立的 这个问题剩下两部分: 1。外部存储器 在可用的情况下,似乎首选外部存

我正在尝试决定将作为即时消息一部分发送到应用程序中的图像存储在何处。这些消息在最初收到后的一段很长时间内都可以在对话历史视图中查看。您可以想象任何数量的其他用例都会有类似的需求,因此这里的问题是“存储不确定数量和大小的图像的最佳实践”

假设

  • SQLite存储显然是一个不好的选择,因为映像大小不是 有界
  • 将这些图像公开给其他应用程序或由MediaScanner发现既不是可取的,也不是不可取的。在这一点上我们被认为是完全中立的
这个问题剩下两部分:

1。外部存储器

在可用的情况下,似乎首选外部存储,因为它可能比其他任何东西都有更多的空间:

文件说明如下:

…使用getExternalCacheDir()来 打开一个文件,该文件表示您要访问的外部存储目录 应该保存缓存文件。如果用户卸载了您的应用程序, 这些文件将被自动删除。然而,在 在应用程序中,您应该管理这些缓存文件并删除它们 为了保留文件空间,不需要这些

与内部存储缓存不同的是,安卓没有声明自动回收外部存储空间。“缓存”这个词仍然让我紧张

  • 问题1:在明确删除之前,这些文件是否保留
  • 问题2:除缓存外,是否还有其他外部存储在卸载应用程序时自动删除,并且由于某些特定原因优于外部缓存
2。内部存储器

显然,并不是每个设备都有外部存储,因此需要为内部存储做准备

  • 问题3:通过
    getCacheDir()
    检索的内部缓存与使用
    openFileOutput(FILENAME,Context.MODE\u PRIVATE)
    创建的文件之间的唯一实际区别是Android在存储空间紧张时可能会删除缓存目录中的文件吗
这些文件在被明确删除之前是否会保留? 我没有读代码,但是javadoc

平台不监视外部存储中的可用空间,因此不会自动删除这些文件。请注意,无论如何,您都应该管理用于这些操作的最大空间,就像使用getCacheDir()一样

除缓存外,是否还有其他外部存储在卸载应用程序时自动删除且更可取? 据我所知没有

通过getCacheDir()检索的内部缓存与使用openFileOutput创建的文件之间的实际差异?
这只是一种方便的方法,AFAIK

getCacheDir()的好处在于它遵循给定API级别的约定。