如何使用Glide加载具有相同网址和不同图像的图像?

时间:2017-03-14 10:26:35

标签: android android-glide

我正在使用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)方法,则需要花费很多时间来加载所有用户图像。

我该如何解决这个问题?

  

是否有任何替代库可以提供更好的解决方案   此?

0 个答案:

没有答案
相关问题