ImageLoador简介

来源:互联网 发布:python爬虫书籍 编辑:程序博客网 时间:2024/06/05 18:52

一、

为了解决OOM(OutOfMemoryError)内存溢出,下载速度慢 导致app崩溃:

解决方案是:

1)对图片进行压缩(BitmapFactory.Options)

2)及时回收Bitmap的内存(Bitmap.recycle())

3)缓存图片(缓存到内存、sd卡等【Map< String,SoftReference< Bitmap > > imageCache】)

4)….
更好的解决方案是:
ImageLoader基本避免了这些问题,下载速度快,基本不会出现内存溢出,还有很好的缓存管理机制

二、概念

1.Android Universal Image Loader 是一个强大的、可高度定制的图片缓存

2.多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)

三、特点

1.可配置度高。支持任务线程池、下载器、解码器、内存及磁盘缓存、显示选项等等的配置。

2.包含内存缓存和磁盘缓存两级缓存。

3.支持多线程,支持异步和同步加载。

4.支持多种缓存算法、下载进度监听、ListView 图片错乱解决等。

四、ImageLoader配置介绍

1.ImageLoaderConfiguration:
是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置

2.DisplayImageOptions:
用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理

3.ImageLoader:
是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(…)、loadImage(…),但是其实最终他们的实现都是displayImage(…)

三者关系:从三者的协作关系上看,他们有点像厨房规定、厨师、客户个人口味之间的关系ImageLoaderConfiguration就像是厨房里面的规定,每一个厨师要怎么着装,要怎么保持厨房的干净,这是针对每一个厨师都适用的规定,而且不允许个性化改变。ImageLoader就像是具体做菜的厨师,负责具体菜谱的制作。DisplayImageOptions就像每个客户的偏好,根据客户是重口味还是清淡,每一个imageLoader根据DisplayImageOptions的要求具体执行

五、基本使用方法

1.getInstance()
得到ImageLoader的单例。通过双层是否为 null 判断提高性能

2.init(ImageLoaderConfiguration configuration)
初始化配置参数,参数configuration为ImageLoader的配置信息,包括图片最大尺寸、任务线程池、磁盘缓存、下载器、解码器等等。

3.实现中会初始化ImageLoaderEngine engine属性,该属性为任务分发器。
displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageLoadingListener listener, ImageLoadingProgressListener progressListener)
加载并显示图片或加载并执行回调接口

0 0
原创粉丝点击