package com.letv.cache; import java.io.File; import android.app.ActivityManager; import android.content.Context; import android.util.Log; import com.nostra13.universalimageloader.cache.disc.DiscCacheAware; import com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.download.HttpClientImageDownloader; import com.nostra13.universalimageloader.utils.LetvThumbnailUtils; public class LetvCacheConfiguration { private static final int MAX_FILE_COUNT = 100; private static final int MAX_FILE_TOTAL_SIZE = 20 * 1024 * 1024; /** * 初始化缓存工具 * */ public static void initCacheLibrary(Context context , LetvThumbnailUtils thumbnailUtils) { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCache(getMemoryCache(context)) .discCache(getDiscCache())//本地缓存配置 //.discCacheFileCount(MAX_FILE_COUNT) .threadPoolSize(3)//图片线程池3 .threadPriority(Thread.NORM_PRIORITY - 2)//线程级别 3 .denyCacheImageMultipleSizesInMemory()//一个URL对应一个图片 .imageDownloader(new HttpClientImageDownloader(context, PoolingClientConnectionManager.get())) .tasksProcessingOrder(QueueProcessingType.LIFO)//任务队列执行顺序 后进先出 .setThumbnailUtils(thumbnailUtils) // .enableLogging() .build(); ImageLoader.getInstance().init(config); } /** * 缓存配置 * */ public static LruMemoryCache getMemoryCache(Context context){ int cacheSize = 4 * 1024 * 1024 ; try{ int memClass = ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); int availableSize = memClass >> 3; cacheSize = 1024 * 1024 * (availableSize == 0 ? 4 : availableSize); Log.d("ljn", "getMemoryCache---memClass:" + memClass + "----availableSize:" + availableSize); } catch (Exception exception){ exception.printStackTrace(); } LruMemoryCache memoryCache = new LruMemoryCache(cacheSize); return memoryCache ; } /** * 缓存目录生成, * 目的地:./letv/cache/pics/ * 命名:MD5加密 * 最大大小:50兆 * */ public static DiscCacheAware getDiscCache(){ final File dir = new File(LetvCacheTools.ConstantTool.IMAGE_CACHE_PATH); // DiscCacheAware discCacheAware = new TotalSizeLimitedDiscCache(dir, new Md5FileNameGenerator(), MAX_FILE_TOTAL_SIZE); DiscCacheAware discCacheAware = new UnlimitedDiscCache(dir, new Md5FileNameGenerator()); return discCacheAware ; } }