19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.engine.cache; 276c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 39fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.Key; 4b7c7c2b2505f996dbda219faeb0d08dc1c9982d7Sam Juddimport com.bumptech.glide.load.engine.Resource; 50e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Juddimport com.bumptech.glide.util.LruCache; 60e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 7c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsisimport static android.content.ComponentCallbacks2.TRIM_MEMORY_BACKGROUND; 8c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsisimport static android.content.ComponentCallbacks2.TRIM_MEMORY_MODERATE; 976c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 107bead36a3031afd9ffb74f06d254f4b11836ceffSam Juddpublic class LruResourceCache extends LruCache<Key, Resource> implements MemoryCache { 110e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd private ResourceRemovedListener listener; 12a55e2011ddbc4c2bac3789903ec338b892aacf10Sam Judd 130e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public LruResourceCache(int size) { 149aa6dd1e9e9497e54d38a8f5f686dd510b224ee1Sam Judd super(size); 1576c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd } 1676c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 1776c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd @Override 180e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd public void setResourceRemovedListener(ResourceRemovedListener listener) { 190e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd this.listener = listener; 2076c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd } 2176c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 2276c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd @Override 2378bad2aa32f824f9e098b5058dfa3506a7ed3f62Sam Judd protected void onItemRemoved(Key key, Resource item) { 240e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd if (listener != null) { 250e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd listener.onResourceRemoved(item); 269aa6dd1e9e9497e54d38a8f5f686dd510b224ee1Sam Judd } 2776c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd } 2876c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 2976c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd @Override 300e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd protected int getSize(Resource item) { 310e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd return item.getSize(); 3276c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd } 3376c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd 34c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis public void trimMemory(int level) { 35c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis if (level >= TRIM_MEMORY_MODERATE) { 36c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis // Nearing middle of list of cached background apps 37c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis // Evict our entire bitmap cache 38c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis clearMemory(); 39c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis } else if (level >= TRIM_MEMORY_BACKGROUND) { 40c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis // Entering list of cached background apps 41c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis // Evict oldest half of our bitmap cache 429aa6dd1e9e9497e54d38a8f5f686dd510b224ee1Sam Judd trimToSize(getCurrentSize() / 2); 43c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis } 440e2e2b1b8df449b6e3223b090f5a55f1993e6c1fSam Judd 45c88ce8ece98d15d94bc3c9e05e60b268ccf9bd30Savvas Dalkitsis } 4676c7bc1d3db2e9f8b855ad7dc0d856358cb0a443Sam Judd} 47