• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.bumptech.glide.load.engine.cache;
2 
3 import com.bumptech.glide.load.Key;
4 import com.bumptech.glide.load.engine.Resource;
5 import com.bumptech.glide.util.LruCache;
6 
7 import static android.content.ComponentCallbacks2.TRIM_MEMORY_BACKGROUND;
8 import static android.content.ComponentCallbacks2.TRIM_MEMORY_MODERATE;
9 
10 public class LruResourceCache extends LruCache<Key, Resource> implements MemoryCache {
11     private ResourceRemovedListener listener;
12 
LruResourceCache(int size)13     public LruResourceCache(int size) {
14         super(size);
15     }
16 
17     @Override
setResourceRemovedListener(ResourceRemovedListener listener)18     public void setResourceRemovedListener(ResourceRemovedListener listener) {
19         this.listener = listener;
20     }
21 
22     @Override
onItemRemoved(Key key, Resource item)23     protected void onItemRemoved(Key key, Resource item) {
24         if (listener != null) {
25             listener.onResourceRemoved(item);
26         }
27     }
28 
29     @Override
getSize(Resource item)30     protected int getSize(Resource item) {
31         return item.getSize();
32     }
33 
trimMemory(int level)34     public void trimMemory(int level) {
35         if (level >= TRIM_MEMORY_MODERATE) {
36             // Nearing middle of list of cached background apps
37             // Evict our entire bitmap cache
38             clearMemory();
39         } else if (level >= TRIM_MEMORY_BACKGROUND) {
40             // Entering list of cached background apps
41             // Evict oldest half of our bitmap cache
42             trimToSize(getCurrentSize() / 2);
43         }
44 
45     }
46 }
47