在Android中延迟加载

时间:2014-02-18 16:35:34

标签: android caching lazy-loading

我想懒惰加载通过蓝牙接收到ListView的图像缩略图。我在android中看到了许多LazyLoading的实现,但我无法理解惰性加载器如何工作的流程。

顺便说一下,我提到了这个网站

http://androidexample.com/Download_Images_From_Web_And_Lazy_Load_In_ListView_-_Android_Example/index.php?view=article_discription&aid=112&aaid=134

在上面的实现中,它们同时使用内存缓存和文件缓存(在类ImageLoader中)。我无法理解为什么有必要保持两个缓存? 在同一个班级中,他维护着一个Map imageViews。为什么他需要imageViews和Image url的映射?

任何人都可以解释上面代码的流程,或者提供一些关于设计我自己的lazyloader类的技巧。

提前致谢

1 个答案:

答案 0 :(得分:0)

我无法理解为什么有必要维护两个缓存?

它正在实现2级缓存,因此您在内存中拥有第一级缓存。此缓存比磁盘缓存(文件缓存)更快,但它不能包含太多元素。二级缓存,文件缓存是一个更大的缓存,但速度较慢。因此,当它想要一个图像时,首先尝试从第一级缓存中获取它,如果它在那里找不到它,请尝试二级缓存。如果图像不在任何一个中,则从网址下载。一旦从互联网检索图像,就将其存储在第一级缓存中。如果缓存中的图像多于缓存大小,则最近使用的图像将从第一级缓存移动到第二级。

使用2级缓存可最大限度地减少互联网连接的使用,并存储您最近使用过的图像。

为什么他需要imageViews和Image url的映射?

缓存知道您请求的图像是否已经在缓存中的方式是在地图中查找URL。把它想象成图像的ID。