自我监控缓存目录

时间:2017-01-20 14:28:31

标签: android caching directory

我目前正在缓存中存储位图图像,每个位图的大小最多可达3mb。我正在使用getCacheDir()但是,在阅读了机器人文档后,我发现了这个:

  

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

所以我正在考虑将我的缓存切换为使用getExternalCacheDir(),但我对此不确定:

  

平台并不总是监视共享存储中的可用空间,因此可能无法自动删除这些文件。应用应始终管理此位置使用的最大空间。目前平台删除此处文件的唯一时间是在JELLY_BEAN_MR1或更高版本上运行并且isExternalStorageEmulated(File)返回true。

我想完全控制缓存目录,因为如果文件被随机删除,这可能会影响我的应用程序的运行。我已经设置了缓存大小的上限,因此它永远不会超过一定的空间。我现在如何阻止系统根据需要监控和删除此缓存?

感谢

1 个答案:

答案 0 :(得分:0)

不要认为缓存是永久存储。您不能存储您依赖的文件。用于存储您并不真正想要重新加载或重新创建的数据的缓存,但是如果需要,您可以执行此操作(如从Web加载图片。从磁盘加载更快,如果已经完成,但可以在没有它的情况下完成) 。如果您真的依赖这些文件,请使用getFilesDir(),这会将您引导至特定的应用程序目录,如果没有内存(但仍可由用户在设置中删除)则不会被删除。此外,如果您拥有静态数据并且始终需要它,则必须将其存储在assets文件夹中,所有其他数据必须被视为临时数据(任何时候用户或系统都可以将其删除)并检查是否存在。

相关问题