滑动缓存同一URL中的不同图像

时间:2018-08-20 07:37:21

标签: android android-imageview android-glide

我使用Glide库从服务器获取图像。我的问题是,当在服务器中使用与先前图像相同的URL更新图像时,Glide显示先前图像。 我在代码中添加了以下几行,但问题仍然存在:

.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.signature(new ObjectKey(String.valueOf(System.currentTimeMillis())))

我的完整代码是:

CircleImageView profileImageView = view.findViewById(R.id.profile_picture_image_view);
GlideApp.with(view.getContext())
                .load(sessionManager.getAvatar().replace("https", "http"))
                .error(R.drawable.default_pic)
                .skipMemoryCache(true)
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .signature(new ObjectKey(String.valueOf(System.currentTimeMillis())))
                .placeholder(R.drawable.ic_camera)
                .centerCrop()
                .into(profileImageView);

我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Glide 4.x,请尝试执行以下操作:

var requestOptions = RequestOptions()
    requestOptions.skipMemoryCache(true)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .signature(ObjectKey(System.currentTimeMillis()))
    Glide.with(this).load(url).apply(requestOptions).into(this)

因此,创建一个RequestOptions()对象并通过该对象应用所需的标志

答案 1 :(得分:0)

尝试这些替代方法

  

解决方案1 ​​

:-使用毕加索

示例代码

在这里毕业

 implementation 'com.squareup.picasso:picasso:2.71828'
  

用法:-

Picasso.get().load("url_here).into(profileImageView);
  

解决方案2 :-

// DownloadImage AsyncTask
    private class DownloadImage extends AsyncTask<String, Void, Bitmap> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        protected Bitmap doInBackground(String... URL) {

            String imageURL = URL[0];

            Bitmap bitmap = null;
            try {
                // Download Image from URL
                InputStream input = new java.net.URL(imageURL).openStream();
                // Decode Bitmap
                bitmap = BitmapFactory.decodeStream(input);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap result) {
            // set bitmap to imageview here
            }
        }
    }

用法:

// Execute DownloadImage AsyncTask
     new DownloadImage().execute("url_here");