我有一个严重基于远程图像的应用程序。它们通常与ListView中的一些数据一起显示。许多这些图像是新的,许多旧图像将不会再被看到。用于清洁SD卡上图像缓存目录的解决方案
我目前将所有这些图像存储在自定义缓存目录(ala evancharlton的magnatune应用程序)中的SD卡上。
我注意到大约10天后,目录总计〜30MB。这比我预期的要多得多,这让我相信我需要提出一个清理旧文件的好方案......我想不出一个好的解决方案。也许你可以帮忙。这些是我的想法:
删除旧文件。当应用程序启动时,启动后台线程,并删除所有超过X天的文件。这似乎是一个问题,但是,如果用户主动使用应用程序,这可能会导致设备呆滞,如果有数百个文件要删除。
在SD卡上创建文件后,请致电
new File("/path/to/file").deleteOnExit();
这将导致所有文件在VM退出时被删除(我甚至不知道此方法是否适用于Android)。这是可以接受的,因为即使需要为会话缓存文件,它们也不需要为下一个会话缓存。看起来如果在虚拟机退出时有很多文件需要删除,这也会降低设备速度。删除旧文件,达到最大文件数量。与#1相同,但一次只能删除N个文件。我不太喜欢这个想法,如果用户非常活跃,它可能永远无法赶上并保持缓存目录清洁。
这就是我所拥有的一切。任何建议,将不胜感激。
我将使用WakefulIntentService和AlarmManager。好主意 - 谢谢! – synic 2010-04-01 02:23:58