package com.bumptech.glide.load.engine.cache; import com.bumptech.glide.load.Key; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.util.LruCache; import static android.content.ComponentCallbacks2.TRIM_MEMORY_BACKGROUND; import static android.content.ComponentCallbacks2.TRIM_MEMORY_MODERATE; public class LruResourceCache extends LruCache implements MemoryCache { private ResourceRemovedListener listener; public LruResourceCache(int size) { super(size); } @Override public void setResourceRemovedListener(ResourceRemovedListener listener) { this.listener = listener; } @Override protected void onItemRemoved(Key key, Resource item) { if (listener != null) { listener.onResourceRemoved(item); } } @Override protected int getSize(Resource item) { return item.getSize(); } public void trimMemory(int level) { if (level >= TRIM_MEMORY_MODERATE) { // Nearing middle of list of cached background apps // Evict our entire bitmap cache clearMemory(); } else if (level >= TRIM_MEMORY_BACKGROUND) { // Entering list of cached background apps // Evict oldest half of our bitmap cache trimToSize(getCurrentSize() / 2); } } }