2016-03-24 172 views
3

我有這種方法,一切都完美的工作,但圖像總是從服務器獲得,而不是從緩存加載!發生了什麼 ?圖像沒有存儲在緩存中

public static void makeImageRequest(String Unique_ID, final View parentView, final int id) { 

    String url = FILE_UPLOAD_FOLDER + Unique_ID + ".png"; 
    final int defaultImageResId = R.drawable.user; 
    // Retrieves an image specified by the URL, displays it in the UI. 
    ImageCacheManager.getInstance().getImage(url, new ImageListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      ImageView imageView = (ImageView) parentView.findViewById(id); 
      imageView.setImageResource(defaultImageResId); 
     } 

     @Override 
     public void onResponse(ImageContainer response, boolean isImmediate) { 
      if (response.getBitmap() != null) { 
       ImageView imageView = (ImageView) parentView.findViewById(id); 
       imageView.setImageBitmap(response.getBitmap()); 
      } else if (defaultImageResId != 0) { 
       ImageView imageView = (ImageView) parentView.findViewById(id); 
       imageView.setImageResource(defaultImageResId); 
      } 

     } 
    }); 
} 

回答

2

只需使用Picasso而不是ImageCacheManagerPicasso是一款功能強大的Android下載和緩存庫。圖像爲Android應用程序添加了非常需要的上下文和視覺風格。畢加索允許在應用程序中輕鬆加載圖像 - 通常只需一行代碼!

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

這裏還可以管理圖像是否被成功下載或失敗:

    Picasso.with(context) 
           .load("http://i.imgur.com/DvpvklR.png") 
           .into(imageView, new Callback() { 
            @Override 
            public void onSuccess() { 
             // your code 
            } 

            @Override 
            public void onError() { 
             // your code 
            } 
           }); 

你只應該在你的gradle這個加入這一行:

compile 'com.squareup.picasso:picasso:2.5.2' 

希望它能幫助!

+0

謝謝。但它總是從緩存中加載圖像,否則首先運行。如何更新圖像? – shirin