【问题标题】:Images are not stored in the cache图像不存储在缓存中
【发布时间】:2016-03-24 13:33:52
【问题描述】:

我有这个方法,一切正常,但图像总是从服务器获取,而不是从缓存中加载!发生了什么?

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);
            }

        }
    });
}

【问题讨论】:

    标签: android image-caching


    【解决方案1】:

    只需使用Picasso 代替ImageCacheManagerPicasso 是一个强大的安卓图片下载和缓存库。图像为 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'
    

    希望对你有帮助!

    【讨论】:

    • 谢谢。但它总是从缓存中加载图像,否则首先运行。如何更新图片?
    猜你喜欢
    • 2012-01-16
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2020-10-08
    • 2014-10-26
    • 2020-10-18
    相关资源
    最近更新 更多