我有一个应用程序,它大量使用远程图片。这些图片通常与ListView中的一些数据一起显示。很多这些图片是新的,而很多旧的图片永远不会再次被看到。
目前我将所有这些图片存储在SD卡上的自定义缓存目录中(类似于evancharlton的magnatune应用程序)。
我注意到大约10天后,该目录的总大小约为30MB。这比我预期的要多得多,这使我相信我需要想出一个好的解决方案来清理旧文件...但我就是想不出一个好的办法。也许你可以帮忙。以下是我想到的几种解决方案:
1.删除旧文件。当应用程序启动时,启动一个后台线程,删除所有早于X天的文件。然而,如果用户积极使用应用程序,如果有数百个文件需要删除,这可能会使设备变得缓慢。
2.在SD卡上创建文件后,调用
3.删除旧文件,最多删除N个文件。与第1种方法相同,但一次只删除N个文件。我不太喜欢这个想法,如果用户非常活跃,它可能永远无法赶上并保持缓存目录的清洁。
以上就是我能想到的全部解决方案。如果您有任何建议,将不胜感激。
目前我将所有这些图片存储在SD卡上的自定义缓存目录中(类似于evancharlton的magnatune应用程序)。
我注意到大约10天后,该目录的总大小约为30MB。这比我预期的要多得多,这使我相信我需要想出一个好的解决方案来清理旧文件...但我就是想不出一个好的办法。也许你可以帮忙。以下是我想到的几种解决方案:
1.删除旧文件。当应用程序启动时,启动一个后台线程,删除所有早于X天的文件。然而,如果用户积极使用应用程序,如果有数百个文件需要删除,这可能会使设备变得缓慢。
2.在SD卡上创建文件后,调用
new File("/path/to/file").deleteOnExit();
。这将导致所有文件在VM退出时被删除(我甚至不知道这种方法在Android上是否有效)。这是可以接受的,因为尽管文件需要在会话中缓存,但它们不需要在下一次会话中缓存。如果有很多文件需要在VM退出时删除,这似乎也会使设备变慢。3.删除旧文件,最多删除N个文件。与第1种方法相同,但一次只删除N个文件。我不太喜欢这个想法,如果用户非常活跃,它可能永远无法赶上并保持缓存目录的清洁。
以上就是我能想到的全部解决方案。如果您有任何建议,将不胜感激。