【发布时间】:2013-06-01 03:10:56
【问题描述】:
我正在使用通用图像加载器在列表视图中显示我的应用程序中的图像。我正在使用UnlimitedDiscCache,因为根据文档,这是最快的缓存机制。
但是,我想在我的应用关闭时清除磁盘缓存(例如在 onStop() 中),但只应删除超过给定限制的最旧缓存文件(如 TotalSizeLimitedDiscCache 那样)。
我知道ImageLoader.clearDiscCache(),但在我的情况下,这会清除完整的缓存,因为我之前使用的是UnlimitedDiscCache...
所以我希望在用户加载和滚动列表视图时拥有最快的缓存机制,并在用户不再与应用交互时清除慢速缓存。
有什么想法可以实现吗?
【问题讨论】:
-
您不能保证应用程序在调用
onStop()时停止。这只表示当前活动正在停止。与实现另一种缓存机制所花费的时间相比(这可能会减慢应用程序的速度),性能损失非常小。 -
@jeff_bordon 你有用于构建 ImageLoader 实例的代码吗? @Androidy 是的,您可以区分应用程序何时结束,例如
if(isFinishing()) { do something} -
@jeff_bordon 你可以拥有 BoB(两者兼得)。请参阅此处的源代码github.com/nostra13/Android-Universal-Image-Loader/blob/master/… 编写 UnlimitedAgeDiskCache 将非常简单。您只需要知道现在和那时之间的日期和差异。我认为如果是几个 if 问题,它不会降低 ListViews 的速度。
-
isFinishing()只告诉您当前活动正在停止,而不是应用程序。如果您只使用一个Activity,当然可以,否则您会遇到问题。
标签: java android universal-image-loader