129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddpackage com.bumptech.glide; 229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddimport android.content.Context; 4b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Juddimport android.os.Build; 529f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddimport com.android.volley.RequestQueue; 69fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.Engine; 79fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; 89fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.bitmap_recycle.BitmapPoolAdapter; 99fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool; 109fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.cache.DiskCache; 119fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.cache.DiskCacheAdapter; 129fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.cache.DiskLruCacheWrapper; 139fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.cache.LruResourceCache; 149fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.engine.cache.MemoryCache; 15127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Juddimport com.bumptech.glide.load.engine.cache.MemorySizeCalculator; 161cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Juddimport com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor; 1729f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddimport com.bumptech.glide.volley.RequestQueueWrapper; 1829f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 190e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Juddimport java.io.File; 201cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Juddimport java.util.concurrent.ExecutorService; 21b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 2229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Juddpublic class GlideBuilder { 2329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd private RequestQueue requestQueue; 2429f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd private Context context; 25b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd private Engine engine; 26b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd private BitmapPool bitmapPool; 270e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private MemoryCache memoryCache; 280e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private DiskCache diskCache; 291cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd private ExecutorService resizeService; 301cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd private ExecutorService diskCacheService; 3129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 3229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public GlideBuilder(Context context) { 3329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd this.context = context.getApplicationContext(); 3429f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 3529f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 3629f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd public GlideBuilder setRequestQueue(RequestQueue requestQueue) { 3729f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd this.requestQueue = requestQueue; 3829f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd return this; 3929f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 4029f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd 410e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public GlideBuilder setBitmapPool(BitmapPool bitmapPool) { 420e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.bitmapPool = bitmapPool; 43b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd return this; 44b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } 45b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 460e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public GlideBuilder setMemoryCache(MemoryCache memoryCache) { 470e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.memoryCache = memoryCache; 480e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return this; 490e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 500e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 510e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public GlideBuilder setDiskCache(DiskCache diskCache) { 520e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.diskCache = diskCache; 530e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return this; 540e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 550e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 561cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd public GlideBuilder setResizeService(ExecutorService service) { 571cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd this.resizeService = service; 581cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd return this; 591cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd } 601cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd 611cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd public GlideBuilder setDiskCacheService(ExecutorService service) { 621cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd this.diskCacheService = service; 631cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd return this; 641cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd } 651cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd 660e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd GlideBuilder setEngine(Engine engine) { 670e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.engine = engine; 68b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd return this; 69b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } 70b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 7129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd Glide createGlide() { 721cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd if (resizeService == null) { 731cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd final int cores = Math.max(1, Runtime.getRuntime().availableProcessors()); 741cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd resizeService = new FifoPriorityThreadPoolExecutor(cores); 751cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd } 761cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd if (diskCacheService == null) { 771cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd diskCacheService = new FifoPriorityThreadPoolExecutor(1); 781cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd } 791cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd 8029f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd if (requestQueue == null) { 8129f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd requestQueue = RequestQueueWrapper.getRequestQueue(context); 8229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 83b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 84127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Judd MemorySizeCalculator calculator = new MemorySizeCalculator(context); 85b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd if (bitmapPool == null) { 86b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd if (Build.VERSION.SDK_INT >= 11) { 87127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Judd bitmapPool = new LruBitmapPool(calculator.getBitmapPoolSize()); 88b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } else { 89b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd bitmapPool = new BitmapPoolAdapter(); 90b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } 91b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd } 92b215b51a0ba86c2db14bd735cc0207cf3f1c7cd8Sam Judd 930e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (memoryCache == null) { 94127f265355747f88a7ef0f5c73a2e2789f05efc3Sam Judd memoryCache = new LruResourceCache(calculator.getMemoryCacheSize()); 950e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 960e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 970e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (diskCache == null) { 980e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd File cacheDir = Glide.getPhotoCacheDir(context); 990e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (cacheDir != null) { 1000e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd diskCache = DiskLruCacheWrapper.get(cacheDir, Glide.DEFAULT_DISK_CACHE_SIZE); 1010e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1020e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (diskCache == null) { 1030e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd diskCache = new DiskCacheAdapter(); 1040e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1050e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1060e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 1070e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (engine == null) { 1081cd9f328e9aa63121474dbfed8c8baf1a5fe9262Sam Judd engine = new Engine(memoryCache, diskCache, resizeService, diskCacheService); 1090e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd } 1100e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 111be9ba784e13d6f8bf390ec0f11fc2600a38b0548Sam Judd return new Glide(engine, requestQueue, memoryCache, bitmapPool, context); 11229f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd } 11329f3a82eaaf784c3722e7673b6ea6acff9449a4dSam Judd}