Universal-Image-Loader学习系列(二),ImageLoaderConfiguration的使用

一、ImageLoaderConfiguration的配置


 1、memoryCache(MemoryCache memoryCache)
      设置内存缓存,默认是LruMemoryCache
 2、memoryCacheSize(int memoryCacheSize)
      设置在内存缓存的大小,如2*1024*1024
 3、memoryCacheSizePercentage(int availableMemoryPercent)
      设置在内存缓存的占可用内存的百分比,默认是1/8

 4、diskCache(DiskCache diskCache)
      设置磁盘缓存,默认UnlimitedDiskCache
 5、diskCacheFileCount(int maxFileCount)
      设置最大磁盘缓存文件的数量
 6、diskCacheSize(int maxCacheSize)
      设置最大磁盘缓存文件的大小
 7、diskCacheFileNameGenerator(FileNameGenerator fileNameGenerator)
      设置磁盘缓存文件的命名方式
 
 8、defaultDisplayImageOptions(DisplayImageOptions defaultDisplayImageOptions)
      设置默认显示图片的选项

 9、writeDebugLogs()
      设置是否打印log 
 
 10、denyCacheImageMultipleSizesInMemory()
      设置内存缓存不允许缓存不同大小的图片,也就是一个URL只对应一个缓存的bitmap。默认是允许的。

 11、tasksProcessingOrder(QueueProcessingType tasksProcessingType)
      设置加载图片任务的排队方式,默认FIFO,先进先出,还有一种是 LIFO后进先出。

 12、threadPoolSize(int threadPoolSize)
      设置线程池中线程的数量,默认为3
 
 13、threadPriority(int threadPriority)
      设置线程的优先级,默认为3

  14、memoryCacheExtraOptions(int maxImageWidthForMemoryCache, int maxImageHeightForMemoryCache)
      设置图片保存到内存最大的宽高,默认是手机屏幕的宽高,如果ImageLoader获取到View的宽高为0是,那么加载的图片将使用这个大小。

  15、diskCacheExtraOptions(int maxImageWidthForDiskCache, int maxImageHeightForDiskCache,
BitmapProcessor processorForDiskCache)
   
      设置图片缓存到磁盘最大的宽高,BitmapProcessor 是缓存图片时处理图片的接口,可以传null。

  16、imageDownloader(ImageDownloader imageDownloader)
      设置下载的类

  17、imageDecoder(ImageDecoder imageDecoder)
      设置解码的类

  18、taskExecutor(Executor executor)
      设置加载和图片使用的线程池

  19、taskExecutor(Executor executor)
      设置缓存图片到磁盘的线程池


二、ImageLoaderConfiguration的常用配置



上面的 ImageLoaderConfiguration的所有配置项,是不是看晕了,这么多东西要配置。其实作为普通使用的话,很多配置项是用不到的。
16-19这些基本上是用不到,除非你实现ImageLoader相应的接口,自己实现功能。
15一般用于缓存图片到磁盘时处理图片,一般用不到,可以不用配置。
14设置内存缓存图片的最大宽高,一般当ImageLoader获取View的宽高为0时,将使用这个宽高来显示图片,一般情况下使用默认值,也就是屏幕的宽高。

13一般保持默认,不要设置太高,会影响主线程。
12一般保持默认,区间是1-5个,设置越高,速度越快,同时消耗的内存也越多。
11设置任务执行的顺序,默认是FIFO,先进先出,还有一种是LIFO后进先出,在一个ListView里面显示图片,设置成FIFO的话,是从上往下依次加载,而设置成LIFO的话,是从下往上加载。

10调用的话,一个URL只对应一个缓存的bitmap,先在一个小的ImageView上显示一张图片,该图片被加入到缓存,后面有一个大的ImageView要显示这张图片,就会把前面的小的bitmap从缓存中移除,再将大的Bitmap加入到缓存中。
9配置是否显示log,这个一般在开发时调用打开,发布版本前注释掉。
8为ImageLoader显示图片的默认选项,在加载图片时,如果没有传入DisplayImageOptions参数时,默认使用这个DisplayImageOptions,一般设置为最常用的DisplayImageOptions。

7是磁盘缓存文件的命名方式,有两种方法,一种是HashCodeFileNameGenerator,哈希命名方法;一直是Md5FileNameGenerator
默认使用的是HashCodeFileNameGenerator。
6磁盘缓存文件的最大大小,为当DiskCache没有配置时,构造默认使用LruDiskCache时当参数传入。
5磁盘缓存文件的最大数量,为当DiskCache没有配置时,构造默认使用LruDiskCache时当参数传入。
4配置磁盘缓存,主要有三种类型:
UnlimitedDiscCache: 默认使用的缓存,速度最快, 没有缓存大小限制 。
LruDiskCache:限制缓存文件数量的缓存,当达到缓存数量是,移除最近最少使用的缓存文件。
LimitedAgeDiscCache :限制缓存文件的缓存时间,超过时间,则从缓存中移除。

3设置图片内存缓存占程序可用内存的百分比,一般为1/8,会换算成2中的memoryCacheSize。
2设置图片缓存的大小,用于构造LruMemoryCache时传入参数。
1内存缓存类型
强引用缓存:
LruMemoryCache :默认使用,达到缓存容量时,移除最近最少使用的Bitmap。
同时包含强引用和弱引用:
UsingFreqLimitedMemoryCache: 缓存达到上限时,移除使用频率最少的Bitmap。
LRULimitedMemoryCache:缓存达到上限时,移除最近最少使用的Bitmap
FIFOLimitedMemoryCache :缓存达到上限时,移除先加入到缓存的Bitmap
LargestLimitedMemoryCache: 缓存达到上限时,移除最大的Bitmap
LimitedAgeMemoryCache:缓存达到上限时,移除超过时间限制的Bitmap
弱引用:
WeakMemoryCache (没有限制的缓存)
如果对ImageLoader的内存缓存不了解的话,有没有特殊要求的话,1-3都可以不配置,ImageLoader会使用默认的内存缓存去缓存图片,也就是使用了强引用LruMemoryCache,是性能最好的。
对于配置是否启用内存缓存和磁盘缓存,是在DisplayImageOptions中配置。后续文章会详细介绍DisplayImageOptions的配置。
下面贴上官方demo的配置,一般可以参考这个:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.denyCacheImageMultipleSizesInMemory()
				.diskCacheFileNameGenerator(new Md5FileNameGenerator())
				.diskCacheSize(50 * 1024 * 1024) // 50 Mb
				.tasksProcessingOrder(QueueProcessingType.FIFO)
				.writeDebugLogs() // Remove for release app
				.threadPoolSize(5)
				.build();
		// Initialize ImageLoader with configuration.
		ImageLoader.getInstance().init(config);


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值