Изображения не хранятся в кеше
У меня есть этот метод, все работает отлично, но изображения всегда получают с сервера и не загружаются из кеша! что случилось?
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);
}
}
});
}
1 ответ
Решение
Просто используйте Picasso
вместо ImageCacheManager
, Picasso
это мощная библиотека загрузки и кэширования изображений для Android. Изображения добавляют столь необходимый контекст и визуальный стиль приложениям Android. Picasso позволяет без проблем загружать изображения в ваше приложение - часто в одну строку кода!
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'
Надеюсь, поможет!