【问题标题】:High memory usage when loading gif using Glide使用 Glide 加载 gif 时内存使用率高
【发布时间】:2019-03-25 00:40:03
【问题描述】:

我正在使用 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);

【问题讨论】:

  • 你可以添加你正在使用的代码吗?
  • 您需要在您的 gif 中进行中心裁剪,如果您不知道,请不要操作缓存。
  • @YamenNassif,添加了我正在使用的代码。

标签: android android-glide


【解决方案1】:
    Glide.with(mContext)
        .load(imageUrl)
        .override(480, 342)
        .into(...)

覆盖对我有用,仅此而已 小部件更新的 RemoteViews 超出最大位图内存使用错误

【讨论】:

    【解决方案2】:

    经过多次尝试,我得到了这个结果

    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);
    

    【讨论】:

    • 它需要一些时间,但玩。
    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 2015-09-13
    • 1970-01-01
    • 2019-05-09
    • 2012-05-31
    相关资源
    最近更新 更多