Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Glide加载gif时内存使用率高_Android_Android Glide - Fatal编程技术网

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

Android 使用Glide加载gif时内存使用率高,android,android-glide,Android,Android Glide,我正在使用Glide在我的PagerAdapter中加载GIF 图像来自服务器,具有高分辨率和大量帧 我注意到,一旦加载并播放GIF,内存使用率就会很高,并可能导致内存不足 我尝试了以下滑动方法(.override()、skipMemoryCache()、diskCacheStrategy()),但内存使用情况没有改变 在Glide中还有其他方法可以使用吗 Glide.with(mContext) .load(imageUrl) .over

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

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

我注意到,一旦加载并播放GIF,内存使用率就会很高,并可能导致
内存不足

我尝试了以下滑动方法(
.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);
Glide.with(mContext)
.load(图像URL)
.超控(480342)
.listener(新的RequestListener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
imageViewBackground.setImageDrawable(资源);
返回false;
}
})
。输入(imageViewBackground);
超驰控制对我起了作用,但仅此而已 小部件更新的RemoteView超过最大位图内存使用量错误

超驰控制对我起了作用,但仅此而已
RemoteViews for widget update超过最大位图内存使用量错误

经过多次尝试后,我得到了这种方法

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);
Glide.with(mContext)
.load(媒体地址)
.缩略图(滑动)
.with(mContext)
.load(媒体地址)
.listener(新的RequestListener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
progressBar.setVisibility(View.GONE);
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
progressBar.setVisibility(View.GONE);
返回false;
}
})
)
.dontAnimate()
.into(mimessageimage);

经过多次尝试,我终于明白了这一点

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);
Glide.with(mContext)
.load(媒体地址)
.缩略图(滑动)
.with(mContext)
.load(媒体地址)
.listener(新的RequestListener(){
@凌驾
公共布尔onException(异常e、字符串模型、目标、布尔isFirstResource){
progressBar.setVisibility(View.GONE);
返回false;
}
@凌驾
公共布尔值onResourceReady(GlideDrawable资源、字符串模型、目标、布尔值isFromMemoryCache、布尔值isFirstResource){
progressBar.setVisibility(View.GONE);
返回false;
}
})
)
.dontAnimate()
.into(mimessageimage);

你能添加你正在使用的代码吗?你需要在gif中执行中心裁剪,如果你不知道,不要操纵缓存。@YamenNassif,添加了我正在使用的代码。你能添加你正在使用的代码吗?你需要在gif中执行中心裁剪,如果你不知道,不要操纵缓存。@YamenNassif,添加了我正在使用的代码。它需要一些秒,但玩。它需要一些秒,但玩。