我有一個gridview只包含從使用Volley庫服務器動態加載的圖像。 佈局文件:停止從緩存(包含android排球圖像的GridView)loding圖像
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="auto_fit"
android:columnWidth="90dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center"
android:stretchMode="columnWidth" >
</GridView>
所以我'使用下載具有抽射圖像適配器加載所有從服務器中的映像:
public class ImageAdapter extends ArrayAdapter<Album>{
String urlImage;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
// Constructor
public ImageAdapter(Activity activity, List<Album> items) {
super(activity, R.layout.custum_grid_view_item, items);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView = inflater.inflate(R.layout.custum_grid_view_item, null);
Album item = getItem(position);
final ImageView myImageOfItemList = (ImageView) rowView
.findViewById(R.id.image_grid_view);
urlImage =item.getImage();
myImageOfItemList.setTag(urlImage);
imageLoader.get(urlImage, new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
myImageOfItemList.setImageDrawable(getContext()
.getResources().getDrawable(R.drawable.ic_home));
Log.e("ImageLoadError", "Image Load Error: " + error.getMessage());
}
@Override
public void onResponse(ImageContainer response, boolean arg1) {
if (response.getBitmap() != null) {
// load image into imageview
myImageOfItemList.setImageBitmap(response.getBitmap());
}
}
});
return rowView;
}
}
問題是Android應用的用戶訪問剛過gridView,如果圖像在服務器中更新,則舊圖像總是存儲在緩存中,因此用戶在第一次訪問gridView項目後永遠不會獲得更新的版本
我嘗試清除,刪除和拒絕緩存:
AppController.getInstance().getRequestQueue().getCache().remove(url);
AppController.getInstance().getRequestQueue().getCache().invalidate(url, true);
MemoryCacheUtil.removeFromCache(imageUri, imageLoader.getMemoryCache());
但它總是一樣的,即使我總是重新加載我的活動的「onResume」中的數據。 所以,如果一個圖像被添加或刪除它工作正常,但是當我改變它總是舊的顯示。
嗯,我通過添加圖像和更改名稱,它工作正常,但在我的情況下最好的做法是什麼在每次更新後刪除緩存或更改名稱(這意味着另一個要求數據庫刪除然後添加另一個圖像名稱)? – BiLL
不要考慮管理緩存。齊利照顧它。讓您的內存緩存儘可能大,並且磁盤緩存的默認大小爲5MB,這非常合理。 –
ok謝謝你的回答很有幫助(接受...) – BiLL