我使用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);
我该怎么办?
答案 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");