【发布时间】:2010-04-01 01:12:14
【问题描述】:
我有一个严重基于远程图像的应用程序。它们通常与 ListView 中的一些数据一起显示。这些图像中有很多是新的,很多旧的将永远不会再看到。
我目前将所有这些图像存储在 SD 卡上的自定义缓存目录中(ala evancharlton 的 magnatune 应用程序)。
我注意到大约 10 天后,该目录的总大小约为 30MB。这比我预期的要多得多,它让我相信我需要想出一个好的解决方案来清理旧文件......我只是想不出一个好的解决方案。也许你可以帮忙。这些是我的想法:
删除旧文件。当应用程序启动时,启动一个后台线程,并删除所有早于 X 天的文件。不过,这似乎带来了一个问题,因为如果用户积极使用该应用程序,如果要删除数百个文件,这可能会使设备变得迟缓。
在SD卡上创建文件后,调用
new File("/path/to/file").deleteOnExit();这将导致VM退出时删除所有文件(我什至不知道这种方法是否适用于Android)。这是可以接受的,因为即使需要为会话缓存文件,也不需要为下一个会话缓存它们。如果 VM 退出时要删除大量文件,这似乎也会减慢设备速度。删除旧文件,最多可删除文件数。与 #1 相同,但一次只删除 N 个文件。我不太喜欢这个想法,如果用户非常活跃,它可能永远无法赶上并保持缓存目录干净。
这就是我所拥有的一切。任何建议将不胜感激。
【问题讨论】:
标签: android