/**
* 配置ImageLoader
*/
private void configImageLoader() {
File discCacheDir = StorageUtils.getOwnCacheDirectory(getApplicationContext(), "/iWorker/Cache/images");
int memClass = ((android.app.ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
memClass = memClass > 32 ? 32 : memClass;
// 使用可用内存的1/8作为图片缓存
Logger.d( " memory memClass size:{%s}", memClass);
final int cacheSize = 1024 * 1024 * memClass / 4;
Logger.d( " memory cache size:{%s}", cacheSize);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
.memoryCacheExtraOptions(240, 240).taskExecutor(Executors.newFixedThreadPool(10))
// 开启十个线程下载图片,默认是3个
// 设置缓存的每个文件的最大宽高,默认是屏幕宽高
// .diskCacheExtraOptions(1280, 1280, null)
// 存放到SD卡上的最大宽高
// .diskCacheExtraOptions(240, 240, null)
// .threadPoolSize(3)
// 设置线程池大小,默认为3
// .denyCacheImageMultipleSizesInMemory()
// 禁止缓存多份不同大小的图片
// .threadPriority(Thread.NORM_PRIORITY - 1)
// 线程优先级,默认
// .tasksProcessingOrder(QueueProcessingType.FIFO)
// .taskExecutor(executor)
.memoryCache(new LruMemoryCache(cacheSize))
// 缓存策略
// 默认已设为1/8
// .memoryCacheSize(cacheSize)
// .memoryCacheSizePercentage(13)//设置最大内存缓存大小
.diskCache(new UnlimitedDiscCache(discCacheDir))
// 硬盘缓存策略:这个缓存类没有任何的限制
// Sets disk cache for
// images.默认为Android/data/[app_package_name]/cache
// .diskCacheSize(50 * 1024 * 1024)//50M
// .diskCacheFileCount(500)//Sets maximum file count in disk
// cache directory.设置最大文件数
// .diskCacheFileNameGenerator(new
// HashCodeFileNameGenerator())//将保存的时候的URI名称用HASHCODE加密
// .imageDownloader(new IworkerImageDownloader(this))
// .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.writeDebugLogs()// 输出Debug信息,释放版本的时候,不需要这句
.build();
ImageLoader.getInstance().init(config);
}
一般在自定义的Application中进行配置。