我正在使用Glide库加载图片,如下所示
public class LoadImageUtils {
private LoadImageUtils() {
//do nothing
}
private static GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder;
public static void loadImage(String avatarUrl, Context context, ImageView personImage) {
if (TextUtils.isEmpty(avatarUrl)) {
return;
}
if (avatarUrl.endsWith(".svg")) {
initializeRequestBuilder(context);
Uri uri = Uri.parse(avatarUrl);
requestBuilder
.load(uri)
.into(personImage);
} else {
if (context != null) {
Glide.with(context)
.load(avatarUrl)
.placeholder(R.mipmap.avatar_big)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(personImage);
}
}
}
private static void initializeRequestBuilder(Context context) {
if (context != null) {
requestBuilder = Glide.with(context)
.using(Glide.buildStreamModelLoader(Uri.class, context), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<SVG>(new SvgDecoder()))
.decoder(new SvgDecoder())
.placeholder(R.mipmap.avatar_big)
.error(R.mipmap.avatar_big)
.animate(android.R.anim.fade_in)
.listener(new SvgSoftwareLayerSetter<Uri>());
}
}
}
我的应用类似于facebook有帖子,帖子评论,聊天功能。但是每当用户通过网络改变他们的图像时,我就会变得相同而且#34; url&#34;加载用户图像。但 Glide 维护缓存以存储所有图片。
在我的情况下,由于相同的网址,之前的图片正在加载。
但是如果我使用.skipMemoryCache(true)
方法,则需要花费很多时间来加载所有用户图像。
我该如何解决这个问题?
是否有任何替代库可以提供更好的解决方案 此?