class ImageManager {   
    private WeakHashMap<Integer, WeakReference<Bitmap>> mBitmaps;   
    private WeakHashMap<Integer, WeakReference<Drawable》> mDrawables;   
  
    private boolean mActive = true;   
  
    public ImageManager() {   
        mBitmaps = new WeakHashMap<Integer, WeakReference<Bitmap>>();   
        mDrawables = new WeakHashMap<Integer, WeakReference<Drawable>>();   
    }   
  
 
    public Bitmap getBitmap(int resource) {   
        if (mActive) {   
            if (!mBitmaps.containsKey(resource)) {   
                mBitmaps.put(resource,   
                    new WeakReference<Bitmap>(BitmapFactory.decodeResource(MainActivity.getContext().getResources(), resource)));   
            }   
            return ((WeakReference<Bitmap>)mBitmaps.get(resource)).get();   
        }   
        return null;   
    }   
  
    public Drawable getDrawable(int resource) {   
        if (mActive) {   
            if (!mDrawables.containsKey(resource)) {   
                mDrawables.put(resource, new WeakReference<Drawable>(getApplication().getResources().getDrawable(resource)));   
            }   
            return ((WeakReference<Drawable>)mDrawables.get(resource)).get();   
        }   
        return null;   
    }   
  
    public void recycleBitmaps() {   
        Iterator itr = mBitmaps.entrySet().iterator();   
        while (itr.hasNext()) {   
            Map.Entry e = (Map.Entry)itr.next();   
            ((WeakReference<Bitmap>) e.getValue()).get().recycle();   
        }   
        mBitmaps.clear();   
    }   
  
    public ImageManager setActive(boolean b) {   
        mActive = b;   
        return this;   
    }   
  
    public boolean isActive() {   
        return mActive;   
    }   
}  
参考链接:1/2