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的数据采集并动态显示】解决方法
- cgi提取文件内容?解决方法
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- s标签 图片src 当action 解析?解决方法
- CAPTCHA 模块中 ajax form 导致CAPTCHA session reuse attack detected异常,解决方法
- java编程思想.解决方法
- SSH框架导入struts,hibernate,spring分先后顺序吗>>解决方法
- 关于遮罩层的。解决方法
- oracle 最近的时间(而不是前一天的时间) 跪求sql语句 。解决方法
- web service No services have been found.解决方法
- socket.connect(socketAddress,timeout ))解决方法
- description The requested resource (/gongqiu/goindex.action) is not available.解决方法
- javascript中===什么意思?解决方法
- struts工作流程~解决方法
- 求struts2玩的顺的人!解决方法
- Mybatis的mapper.是个接口?解决方法
- 求教一个关于两个list的类似求并集的算法。解决方法
- jquery+ajax网页被卡死,cpu爆掉! - -解决方法
- 怎样实现分页.解决方法
- mapping.findForward()执行后,没有跳转页面?解决方法
- Tomcat7 不支持这句代码,为什么?解决方法
- 经典<<thinking in java >>电子书+课后习题解答.解决方法
- 现在做的一个项目,遇到个坑爹的需求。解决方法
- 在servlet中存了cookie后,再转发到jsp,在jsp上得不到存的cookie, 可是一刷新就得到了,这是为什么?解决方法
- Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'解决方法
- 关于Struts2的list集合里面重复的值的处理办法。解决方法
- 关于servlet,晕了。解决方法
- 统计查询中的查询判断.解决方法
- jdk1.7改成jdk1.6要改哪里?解决方法