ImageLoader硬盘缓存解析

概述

我要说的就是鼎鼎大名的Universal Image Loader,UIL是非常强大的一款图片加载框架,它不仅支持本地图片加载也支持网络图片加载还支持Android自身的drawable文件夹,asset文件夹里面的图片文件加载,也支持视频文件的缩略图加载。可以说是一款非常全面而强大的图片加载框架。说到这里你是不是也对这个框架非常好奇呢?

 

首先我们来看看UIL的代码结构。

我们可以看到UIL的代码结构主要分为两大部分,一部分是cache缓存部分,一部分是core主要用于UIL下载,加载和展示图片功能,当然也暴露了许多定制接口供给开发者使用。

 

Cache硬盘缓存

现在就来看看cache的硬盘缓存部分的源码。

 

大致上硬盘缓存部分有两种DiskCache,一种是基于BaseDiskCache的LimitedAgeDiskCache和UnlimitedDiskCache,另一种是基于DiskLruCache的LruDiskCache。基于BaseDiskCache的DiskCache没有使用LRU算法,基于DiskLruCache的有使用到LRU算法,以上的DiskCache都实现了DiskCache接口。

public interface DiskCache {  
    /** 
     * Returns root directory of disk cache 
     * 
     * @return Root directory of disk cache 
     */  
    File getDirectory();  
  
    /** 
     * Returns file of cached image 
     * 
     * @param imageUri Original image URI 
     * @return File of cached image or <b>null</b> if image wasn't cached 
     */  
    File get(String imageUri);  
  
    /** 
     * Saves image stream in disk cache. 
     * Incoming image stream shouldn't be closed in this method. 
     * 
     * @param imageUri    Original image URI 
     * @param imageStream Input stream of image (shouldn't be closed in this method) 
     * @param listener    Listener for saving progress, can be ignored if you don't use 
     *                    {@linkplain com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener 
     *                    progress listener} in ImageLoader calls 
     * @return <b>true</b> - if image was saved successfully; <b>false</b> - if image wasn't saved in disk cache. 
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值