@Override public void applyOptions(final Context context, GlideBuilder builder) { builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter () { @Override public File getCacheDirectory() { return context.getExternalCacheDir(); } }, DiskCache.Factory.DEFAULT_DISK_CACHE_SIZE)); }
@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { final AppComponent appComponent = ArmsUtils.obtainAppComponentFromContext(context); builder.setDiskCache(new DiskCache.Factory() { @Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.create(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } }); MemorySizeCalculator calculator = new MemorySizeCalculator.Builder(context).build(); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); //将配置 Glide 的机会转交给 GlideImageLoaderStrategy,如你觉得框架提供的 GlideImageLoaderStrategy //并不能满足自己的需求,想自定义 BaseImageLoaderStrategy,那请你最好实现 GlideAppliesOptions //因为只有成为 GlideAppliesOptions 的实现类,这里才能调用 applyGlideOptions(),让你具有配置 Glide 的权利 BaseImageLoaderStrategy loadImgStrategy = appComponent.imageLoader().getLoadImgStrategy(); if (loadImgStrategy != null && loadImgStrategy instanceof GlideAppliesOptions) { ((GlideAppliesOptions) loadImgStrategy).applyGlideOptions(context, builder); } }
@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { super.applyOptions(context, builder); builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_ARGB_8888)); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); executor = MockGlideExecutor.newMainThreadExecutor(); context = InstrumentationRegistry.getTargetContext(); glideBuilder = new GlideBuilder() .setAnimationExecutor(executor) .setSourceExecutor(executor) .setDiskCacheExecutor(executor); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); context = RuntimeEnvironment.application; Glide.init(context, new GlideBuilder().setBitmapPool(bitmapPool)); }
@Test public void testClearMemory() { Glide glide = new GlideBuilder() .setBitmapPool(bitmapPool) .setMemoryCache(memoryCache) .build(context); glide.clearMemory(); verify(bitmapPool).clearMemory(); verify(memoryCache).clearMemory(); }
@Override public void applyOptions(Context context, GlideBuilder builder) { // 指定位置在packageName/cache/glide_cache,大小为MAX_CACHE_DISK_SIZE的磁盘缓存 builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glide_cache", ConfigConstants.MAX_CACHE_DISK_SIZE)); //指定内存缓存大小 builder.setMemoryCache(new LruResourceCache(ConfigConstants.MAX_CACHE_MEMORY_SIZE)); //全部的内存缓存用来作为图片缓存 builder.setBitmapPool(new LruBitmapPool(ConfigConstants.MAX_CACHE_MEMORY_SIZE)); builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);//和Picasso配置一样 }
@Test public void transform_withLoadedBitmapDrawable_doesNotRecycleBitmap() { Glide.init( context, glideBuilder .setMemoryCache(new MemoryCacheAdapter()) .setBitmapPool(new BitmapPoolAdapter())); Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), ResourceIds.raw.canonical); BitmapDrawable drawable = new BitmapDrawable(context.getResources(), bitmap); concurrency.wait( GlideApp.with(context) .load(drawable) .centerCrop() .submit(100, 100)); assertThat(bitmap.isRecycled()).isFalse(); }
@Test public void transformFromRequestManager_withLoadedBitmap_doesNotRecycleBitmap() { Glide.init( context, new GlideBuilder() .setMemoryCache(new MemoryCacheAdapter()) .setBitmapPool(new BitmapPoolAdapter())); Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), ResourceIds.raw.canonical); concurrency.wait( GlideApp.with(context) .load(bitmap) .centerCrop() .submit(100, 100)); assertThat(bitmap.isRecycled()).isFalse(); }
Glide.init( context, new GlideBuilder() .setMemoryCache(memoryCache) .setDiskCache(diskCacheFactory) .setSourceExecutor(executor) .setDiskCacheExecutor(executor)); Registry registry = Glide.get(context).getRegistry(); registerMockModelLoader(
@Override public void applyOptions(Context context, GlideBuilder builder) { int MEM_CACHE_SIZE = 1024 * 1024 * ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass() / 3; builder.setMemoryCache(new LruResourceCache(MEM_CACHE_SIZE)); builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); builder.setDiskCache(new ExternalCacheDiskCacheFactory(context)); }
@Override public void applyOptions(Context context, GlideBuilder builder) { // Apply options to the builder here. builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); }
@Override public void applyOptions(Context context, GlideBuilder builder) { super.applyOptions(context, builder); String diskCache = FileUtils.getGlideDefaultPath(context); builder.setDiskCache(new DiskLruCacheFactory(diskCache, 100 * 1024 * 1024)); // builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); builder.setDefaultRequestOptions(new RequestOptions() .format(DecodeFormat.PREFER_ARGB_8888) ); }
@Test public void loadFromCache_afterDiskCacheDeleted_doesNotFail() { final DiskCache cache = DiskLruCacheWrapper.create(cacheDir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursively(cacheDir); Glide.init( context, new GlideBuilder() .setDiskCache(new Factory() { @Override public DiskCache build() { return cache; } })); Drawable drawable = concurrency.get(Glide.with(context) .load(raw.canonical) .submit()); assertThat(drawable).isNotNull(); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setMemoryCache(new LruResourceCache(10 * M)); builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, "glide-cache", DEFAULT_DISK_CACHE_SIZE)); }
@Override public void applyOptions(Context context, GlideBuilder builder) { builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); MemorySizeCalculator calculator = new MemorySizeCalculator(context); int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize); int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize); builder.setMemoryCache(new LruResourceCache(customMemoryCacheSize)); builder.setBitmapPool(new LruBitmapPool(customBitmapPoolSize)); }
@Before public void setUp() { MockitoAnnotations.initMocks(this); context = InstrumentationRegistry.getTargetContext(); Glide.init(context, new GlideBuilder().setMemoryCache(new LruResourceCache(CACHE_SIZE_BYTES))); }
/** * 通过GlideBuilder设置默认的结构(Engine,BitmapPool ,ArrayPool,MemoryCache等等). * @param context * @param builder */ @Override public void applyOptions(Context context, GlideBuilder builder) { //重新设置内存限制 builder.setMemoryCache(new LruResourceCache(10*1024*1024)); }
annotationGeneratedModule != null ? annotationGeneratedModule.getRequestManagerFactory() : null; GlideBuilder builder = new GlideBuilder() .setRequestManagerFactory(factory); for (GlideModule module : manifestModules) { module.applyOptions(applicationContext, builder); annotationGeneratedModule.applyOptions(applicationContext, builder); Glide glide = builder.build(applicationContext); for (GlideModule module : manifestModules) { module.registerComponents(applicationContext, glide, glide.registry);
@Before public void setUp() { MockitoAnnotations.initMocks(this); context = InstrumentationRegistry.getTargetContext(); imageView = new ImageView(context); imageView.measure(100, 100); imageView.layout(0, 0, 100, 100); // Some emulators only have a single resize thread, so waiting on a latch will block them // forever. Glide.init(context, new GlideBuilder().setSourceExecutor(GlideExecutor.newUnlimitedSourceExecutor())); }