Android Universal Image Loader 源码分析(二)
博客专区 > kim366 的博客 > 博客详情
Android Universal Image Loader 源码分析(二)
kim366 发表于2年前
Android Universal Image Loader 源码分析(二)
  • 发表于 2年前
  • 阅读 1
  • 收藏 0
  • 点赞 2
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

2. 总体设计

2.1. 总体设计图

总体设计图
上面是 UIL 的总体设计图。整个库分为ImageLoaderEngineCacheImageDownloaderImageDecoderBitmapDisplayerBitmapProcessor五大模块,其中Cache分为MemoryCacheDiskCache两部分。

简单的讲就是ImageLoader收到加载及显示图片的任务,并将它交给ImageLoaderEngineImageLoaderEngine分发任务到具体线程池去执行,任务通过CacheImageDownloader获取图片,中间可能经过BitmapProcessorImageDecoder处理,最终转换为Bitmap交给BitmapDisplayerImageAware中显示。


2.2. UIL 中的概念

简单介绍一些概念,在4. 详细设计中会仔细介绍。
ImageLoaderEngine:任务分发器,负责分发LoadAndDisplayImageTaskProcessAndDisplayImageTask给具体的线程池去执行,本文中也称其为engine,具体参考4.2.6 ImageLoaderEngine.java

ImageAware:显示图片的对象,可以是ImageView等,具体参考4.2.9 ImageAware.java

ImageDownloader:图片下载器,负责从图片的各个来源获取输入流, 具体参考4.2.22 ImageDownloader.java

Cache:图片缓存,分为MemoryCacheDiskCache两部分。

MemoryCache:内存图片缓存,可向内存缓存缓存图片或从内存缓存读取图片,具体参考4.2.24 MemoryCache.java

DiskCache:本地图片缓存,可向本地磁盘缓存保存图片或从本地磁盘读取图片,具体参考4.2.38 DiskCache.java

ImageDecoder:图片解码器,负责将图片输入流InputStream转换为Bitmap对象, 具体参考4.2.53 ImageDecoder.java

BitmapProcessor:图片处理器,负责从缓存读取或写入前对图片进行处理。具体参考4.2.61 BitmapProcessor.java

BitmapDisplayer:Bitmap对象显示在相应的控件ImageAware上, 具体参考4.2.56 BitmapDisplayer.java

LoadAndDisplayImageTask:用于加载并显示图片的任务, 具体参考4.2.20 LoadAndDisplayImageTask.java

ProcessAndDisplayImageTask:用于处理并显示图片的任务, 具体参考4.2.19 ProcessAndDisplayImageTask.java

DisplayBitmapTask:用于显示图片的任务, 具体参考4.2.18 DisplayBitmapTask.java


3. 流程图


上图为图片加载及显示流程图,在 uil 库中给出,这里用中文重新画出。



  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 129
码字总数 0
×
kim366
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: