2015-04-14 151 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