2015-04-14 149 views
4

我想在我的ImageLoader的缓存调用.evictAll()子类的方法,我无法弄清楚如何呼吁的ImageLoader的

private VolleySingleton(){ 
     mRequestQueue = Volley.newRequestQueue(VolleyApplication.getAppContext()); 

     mImageLoader = new ImageLoader(this.mRequestQueue, new ImageLoader.ImageCache() { 
      private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10); 
      public void flushLruCache(){ mCache.evictAll();}; 
      public void putBitmap(String url, Bitmap bitmap) { 
       mCache.put(url, bitmap); 
      } 
      public Bitmap getBitmap(String url) { 
       return mCache.get(url); 
      } 
     }); 

    } 

mRequestQueue = VolleySingleton.getInstance().getRequestQueue(); 
mImageLoader = VolleySingleton.getInstance().getImageLoader(); 

我试过铸造我的访问方法mImageLoader对象

((ImageLoader.ImageCache) mImageLoader).flushLruCache(); 

但是,抛出一个错误,说我不能转换这些类型。

如何访问.flushLruCache()方法?

回答

2

如果我没有理解错误,你可以保持到ImageLoader.ImageCache一个参考,在你的类

private ImageLoader.ImageCache mImageCache;  
private VolleySingleton(){ 
    mRequestQueue = Volley.newRequestQueue(VolleyApplication.getAppContext()); 
    mImageLoader = new ImageLoader(this.mRequestQueue, mImageCache = new ImageLoader.ImageCache() { 
     private final LruCache<String, Bitmap> mCache = new LruCache<String, Bitmap>(10); 
     public void flushLruCache(){ mCache.evictAll();}; 
     public void putBitmap(String url, Bitmap bitmap) { 
      mCache.put(url, bitmap); 
     } 
     public Bitmap getBitmap(String url) { 
      return mCache.get(url); 
     } 


    }); 
} 

,并在其中

public void evictAllImages() { 
     if (mImageCache != null) { 
      mImageCache.flushLruCache(); 
     } 
} 
+0

这工作完全申报evictAllImages,我不得不添加flushLruCache (); ImageLoader.java中的ImageCache接口为此工作,谢谢。 – Johntk

+0

不客气 – Blackbelt