/** * 配置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中进行配置。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-21 00:07:05