/** * Adjusts Glide's current and maximum memory usage based on the given {@link MemoryCategory}. * * <p> The default {@link MemoryCategory} is {@link MemoryCategory#NORMAL}. * {@link MemoryCategory#HIGH} increases Glide's maximum memory usage by up to 50% and * {@link MemoryCategory#LOW} decreases Glide's maximum memory usage by 50%. This method should be * used to temporarily increase or decrease memory usage for a single Activity or part of the app. * Use {@link GlideBuilder#setMemoryCache(MemoryCache)} to put a permanent memory size if you want * to change the default. </p> * * @return the previous MemoryCategory used by Glide. */ @SuppressWarnings("WeakerAccess") // Public API @NonNull public MemoryCategory setMemoryCategory(@NonNull MemoryCategory memoryCategory) { // Engine asserts this anyway when removing resources, fail faster and consistently Util.assertMainThread(); // memory cache needs to be trimmed before bitmap pool to trim re-pooled Bitmaps too. See #687. memoryCache.setSizeMultiplier(memoryCategory.getMultiplier()); bitmapPool.setSizeMultiplier(memoryCategory.getMultiplier()); MemoryCategory oldCategory = this.memoryCategory; this.memoryCategory = memoryCategory; return oldCategory; }
@Test public void testCanIncreaseMemoryCategory() { MemoryCategory memoryCategory = MemoryCategory.NORMAL; Glide glide = new GlideBuilder() .setBitmapPool(bitmapPool) .setMemoryCache(memoryCache) .build(context); glide.setMemoryCategory(memoryCategory); verify(memoryCache).setSizeMultiplier(eq(memoryCategory.getMultiplier())); verify(bitmapPool).setSizeMultiplier(eq(memoryCategory.getMultiplier())); MemoryCategory newMemoryCategory = MemoryCategory.HIGH; MemoryCategory oldMemoryCategory = glide.setMemoryCategory(newMemoryCategory); assertEquals(memoryCategory, oldMemoryCategory); verify(memoryCache).setSizeMultiplier(eq(newMemoryCategory.getMultiplier())); verify(bitmapPool).setSizeMultiplier(eq(newMemoryCategory.getMultiplier())); }
@Test public void testCanSetMemoryCategory() { MemoryCategory memoryCategory = MemoryCategory.NORMAL; Glide glide = new GlideBuilder() .setBitmapPool(bitmapPool) .setMemoryCache(memoryCache) .build(context); glide.setMemoryCategory(memoryCategory); verify(memoryCache).setSizeMultiplier(eq(memoryCategory.getMultiplier())); verify(bitmapPool).setSizeMultiplier(eq(memoryCategory.getMultiplier())); }
@Test public void testCanDecreaseMemoryCategory() { MemoryCategory memoryCategory = MemoryCategory.NORMAL; Glide glide = new GlideBuilder() .setBitmapPool(bitmapPool) .setMemoryCache(memoryCache) .build(context); glide.setMemoryCategory(memoryCategory); verify(memoryCache).setSizeMultiplier(eq(memoryCategory.getMultiplier())); verify(bitmapPool).setSizeMultiplier(eq(memoryCategory.getMultiplier())); MemoryCategory newMemoryCategory = MemoryCategory.LOW; MemoryCategory oldMemoryCategory = glide.setMemoryCategory(newMemoryCategory); assertEquals(memoryCategory, oldMemoryCategory); verify(memoryCache).setSizeMultiplier(eq(newMemoryCategory.getMultiplier())); verify(bitmapPool).setSizeMultiplier(eq(newMemoryCategory.getMultiplier())); }
/** * Adjusts Glide's current and maximum memory usage based on the given {@link MemoryCategory}. * * <p> * The default {@link MemoryCategory} is {@link MemoryCategory#NORMAL}. {@link MemoryCategory#HIGH} increases * Glide's maximum memory usage by up to 50% and {@link MemoryCategory#LOW} decreases Glide's maximum memory * usage by 50%. This method should be used to temporarily increase or decrease memory useage for a single * Activity or part of the app. Use {@link GlideBuilder#setMemoryCache(MemoryCache)} to set a permanent * memory size if you want to change the default. * </p> */ public void setMemoryCategory(MemoryCategory memoryCategory) { // Engine asserts this anyway when removing resources, fail faster and consistently Util.assertMainThread(); // memory cache needs to be trimmed before bitmap pool to trim re-pooled Bitmaps too. See #687. memoryCache.setSizeMultiplier(memoryCategory.getMultiplier()); bitmapPool.setSizeMultiplier(memoryCategory.getMultiplier()); }
/** * Adjusts Glide's current and maximum memory usage based on the given {@link MemoryCategory}. * * <p> The default {@link MemoryCategory} is {@link MemoryCategory#NORMAL}. * {@link MemoryCategory#HIGH} increases Glide's maximum memory usage by up to 50% and * {@link MemoryCategory#LOW} decreases Glide's maximum memory usage by 50%. This method should be * used to temporarily increase or decrease memory usage for a single Activity or part of the app. * Use {@link GlideBuilder#setMemoryCache(MemoryCache)} to put a permanent memory size if you want * to change the default. </p> * * @return the previous MemoryCategory used by Glide. */ public MemoryCategory setMemoryCategory(MemoryCategory memoryCategory) { // Engine asserts this anyway when removing resources, fail faster and consistently Util.assertMainThread(); // memory cache needs to be trimmed before bitmap pool to trim re-pooled Bitmaps too. See #687. memoryCache.setSizeMultiplier(memoryCategory.getMultiplier()); bitmapPool.setSizeMultiplier(memoryCategory.getMultiplier()); MemoryCategory oldCategory = this.memoryCategory; this.memoryCategory = memoryCategory; return oldCategory; }