Изображения не хранятся в кеше

У меня есть этот метод, все работает отлично, но изображения всегда получают с сервера и не загружаются из кеша! что случилось?

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'

Надеюсь, поможет!

Другие вопросы по тегам