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

时间:2011-11-23 13:11:59

标签: android

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

假设

  • SQLite存储显然是一个糟糕的选择,因为图像大小不是 界。
  • 这些图像可供其他应用程序公开使用或MediaScanner可发现,这既不可取也不可取。我们被认为在这一点上是完全中立的......

这留下了这个问题的两个部分:

1。外部存储

外观存储似乎是首选,因为它可能比其他任何东西都有更多空间:

文档说明如下:

  

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

与内部存储缓存不同,没有关于Android自动回收外部存储空间的声明。 “缓存”这个词让我很紧张。

  • 问题1:这些文件是否保留,直到明确删除为止?
  • 问题2:是否有除缓存之外的任何其他外部存储在卸载应用时自动删除,并且由于某些特定原因而优于外部缓存?

2。内部存储

显然,并非每个设备都有外部存储设备,因此需要为内部存储设置。

  • 问题3:通过getCacheDir()检索的内部缓存与使用openFileOutput(FILENAME, Context.MODE_PRIVATE)创建的文件之间唯一的实际区别是Android可能会在压力下删除缓存目录中的文件对于存储空间?

1 个答案:

答案 0 :(得分:1)

这些文件是否保留,直到明确删除为止?

我还没有读过代码,而是javadoc explicitely says

  

平台不监控外部存储空间,因此不会自动删除这些文件。请注意,您应该管理将用于这些空间的最大空间,就像使用getCacheDir()一样。

是否有除缓存之外的任何其他外部存储在卸载应用程序时自动删除并且更可取?

我不知道。

通过getCacheDir()检索的内部缓存与使用openFileOutput创建的文件之间的实际区别是什么?

这只是一种设施方法,AFAIK