使用Glide加载gif时的高内存使用率

时间:2017-07-27 08:32:45

标签: android android-glide

我正在使用Glide在我的PagerAdapter中加载GIF。

图像来自服务器,具有高分辨率和大量帧。

我注意到加载和播放GIF后内存使用量很高,可能导致Out Of Memory

我尝试了以下Glide方法(.override(),skipMemoryCache(),diskCacheStrategy()),但内存使用情况没有改变。

Glide中是否还有其他可以使用的方法?

    Glide.with(mContext)
            .load(imageUrl)
            .override(480, 342)
            .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) {
                    imageViewBackground.setImageDrawable(resource);
                    return false;
                }
            })
    .into(imageViewBackground);

2 个答案:

答案 0 :(得分:0)

    Glide.with(mContext)
        .load(imageUrl)
        .override(480, 342)
        .into(...)

覆盖为我做了伎俩而已 用于窗口小部件更新的RemoteViews超出了最大位图内存使用错误

答案 1 :(得分:0)

经过多次尝试后我才开始这样做

Glide.with(mContext)
     .load(media_url)
     .thumbnail(Glide
     .with(mContext)
     .load(media_url)
     .listener(new RequestListener<String, GlideDrawable>() {
                                @Override
                                public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                                    progressBar.setVisibility(View.GONE);
                                    return false;

                                }

                                @Override
                                public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                                    progressBar.setVisibility(View.GONE);
                                    return false;
                                }
                            })
                    )

                    .dontAnimate()
                    .into(mIvMessageImage);