1、引入largeHeap属性,让系统为App分配更多的独立内存。
2、禁止Glide内存缓存。设置skipMemoryCache(true)。
3、自定义GlideModule。设置MemoryCache和BitmapPool大小。
4、升级到Glide4.0,使用asDrawable代替asBitmap,drawable更省内存。
5、ImageView的scaleType为fitXY时,改为fitCenter/centerCrop/fitStart/fitEnd显示。
6、不使用application作为context。当context为application时,会把imageView是生命周期延长到整个运行过程中,imageView不能被回收,从而造成OOM异常。
7、使用application作为context。但是对ImageView使用弱引用或软引用,尽量使用SoftReference,当内存不足时,将及时回收无用的ImageView。
8、当列表在滑动的时候,调用Glide的pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求。
9、Try catch某些大内存分配的操作。考虑在catch里面尝试一次降级的内存分配操作。例如decode bitmap的时候,catch到OOM,可以尝试把采样比例再增加一倍之后,再次尝试decode。
10、BitmapFactory.Options和BitmapFactory.decodeStream获取原始图片的宽、高,绕过Java层加载Bitmap,再调用Glide的override(width,height)控制显示。
11、图片局部加载。参考:SubsamplingScaleImageView,先将图片下载到本地,然后去加载,只加载当前可视区域,在手指拖动的时候再去加载另外的区域。
详细解决方案
Glide OOM问题解决方法汇总
热度:31 发布时间:2024-01-11 22:04:17.0
相关解决方案
- IE不支持JQuery吗?解决方法
- boa+cgi+sqlite3【基于web的数据采集并动态显示】解决方法
- s标签 图片src 当action 解析?解决方法
- java编程思想.解决方法
- SSH框架导入struts,hibernate,spring分先后顺序吗>>解决方法
- 关于遮罩层的。解决方法
- oracle 最近的时间(而不是前一天的时间) 跪求sql语句 。解决方法
- description The requested resource (/gongqiu/goindex.action) is not available.解决方法
- javascript中===什么意思?解决方法
- struts工作流程~解决方法
- 求struts2玩的顺的人!解决方法
- Mybatis的mapper.是个接口?解决方法
- 求教一个关于两个list的类似求并集的算法。解决方法
- mapping.findForward()执行后,没有跳转页面?解决方法
- 现在做的一个项目,遇到个坑爹的需求。解决方法
- 在servlet中存了cookie后,再转发到jsp,在jsp上得不到存的cookie, 可是一刷新就得到了,这是为什么?解决方法
- Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'解决方法
- 统计查询中的查询判断.解决方法
- jdk1.7改成jdk1.6要改哪里?解决方法
- 求一正则表达式写法aassddd/bbsdd/cc.js 替换成././解决方法
- 迷茫的感想,希望大能的你们给点意见.解决方法
- 用Jsp做了一个显示图书陈列页面,不知道怎样循环显示.解决方法
- 学java,该选择哪个数据库?解决方法
- 求大腿啊 !解决方法
- spring AOP在实际项目中的应用.解决方法
- js延迟加载?解决方法
- eclipse 经典版,最新稳定版是多少?解决方法
- 公司有食言了,不爽,散分.解决方法
- 4年工作经验进深圳华为能拿多少钱一个月?解决方法
- 成功驱除老鼠 - 散分。解决方法