Android Universal Image Loader 源码分析(二)
来源:互联网 发布:windows 评估副本 编辑:程序博客网 时间:2024/06/05 18:44
2. 总体设计
2.1. 总体设计图
上面是 UIL 的总体设计图。整个库分为ImageLoaderEngine
,Cache
及ImageDownloader
,ImageDecoder
,BitmapDisplayer
,BitmapProcessor
五大模块,其中Cache
分为MemoryCache
和DiskCache
两部分。
简单的讲就是ImageLoader
收到加载及显示图片的任务,并将它交给ImageLoaderEngine
,ImageLoaderEngine
分发任务到具体线程池去执行,任务通过Cache
及ImageDownloader
获取图片,中间可能经过BitmapProcessor
和ImageDecoder
处理,最终转换为Bitmap
交给BitmapDisplayer
在ImageAware
中显示。
2.2. UIL 中的概念
简单介绍一些概念,在4. 详细设计
中会仔细介绍。
ImageLoaderEngine:任务分发器,负责分发LoadAndDisplayImageTask
和ProcessAndDisplayImageTask
给具体的线程池去执行,本文中也称其为engine
,具体参考4.2.6 ImageLoaderEngine.java
。
ImageAware:显示图片的对象,可以是ImageView
等,具体参考4.2.9 ImageAware.java
。
ImageDownloader:图片下载器,负责从图片的各个来源获取输入流, 具体参考4.2.22 ImageDownloader.java
。
Cache:图片缓存,分为MemoryCache
和DiskCache
两部分。
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 库中给出,这里用中文重新画出。
- Android Universal Image Loader 源码分析(二)
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- Android Universal Image Loader 源码分析
- hdu1878欧拉回路(DFS+欧拉回路)
- java IO 总结 (待续)
- RabbitMQ源码解析前奏--管理与监控
- 树形DP - hdu5293 Tree chain problem
- std::allocator 的简单用法
- Android Universal Image Loader 源码分析(二)
- iOS入门(五)数组排序
- 给phpcms v9增加远程模型及远程栏目
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- javaScript的运算符和if。。else语句
- EasyUi合并表头
- 2个创业项目失败总结
- HDU 2084(数塔)动态规划-数塔问题
- Android中自定义属性的格式详解