使用ViewPage过程中遇到的OOM及EX
来源:互联网 发布:mac 怎么用f5 编辑:程序博客网 时间:2024/06/05 01:27
OOM
情景:需要在一个Fragment中使用autobanner轮播图 和一个静态viewPager 同时两者都有联动Indicator
考虑结构类似决定复用同一个bannerFragment;
然后就悲剧了;连续花了两个晚上折腾到2点都没有调试清楚;
直到真正空下来认真研究调试;
<-------------------------------以上唠叨,以下正文-------------------------------------->
来围观第一个Bug
情景:1.进入就死;2.多次启动程序加载完图片或者使用静态图填充后,静态banner滑动;
下面这个错误的原因 :
是在 同一个Fragment 中复用同一个bannenrFragment viewpager 中pager ID一样
系统无法识别。类似递归,导致OOM
解决:复用代码bannerFragment 但是需要 cpuyi个相同的bannerFragment xml文件 并且 pager的ID 需要重新注册;然后在
bannerFragment中根据需要复用;
另:不同的viewPager需要不同的fm;
解决了这个Bug,但是别开心太早还有 问题 依旧是OOM (暂时不太清楚原因,后来清楚了)
补充:savestate 触发机制 是在图片加载过程中 关闭或暂停Activity调用
destoryitem() 触发机制是在图片加载完成之后 关闭activity触发
解决bug思路: 重写fragmentStatePagerAdapter 中 instantiateItem()、destroyItem()、saveState()、restoreState()方法
下面这个错误 是因为commit的执行是在Activity 销毁前 onsaveInstanceState之后进行操作的,此时用commit提交可能
导致因State丢失而导致异常,解决方法是commitAllowStateLoss()
官方文档:
允许在状态丢失的情况下提交
触发情景 当Fragment正在加载图片 back退出app
onResponse中调用replace()但是此时Activity已经Ondestory();
解决思路: 1.异步任务重调用片段方法前,判断Activity是否存在,2.重写Ondestory();当destory触发则停止所有异步任务;
<-------------------------------以上正文,以下唠叨-------------------------------------->
终于有一种便秘365天之后一泻千里的畅快了。
性格比较倔强,虽然重心是开发,但是还是想克服难题;但是值得注意的是,在工作中尽量不要这么
较真,先实现功能为主,闲暇之时可以来研究;迂回,规避都可以;
感触:
遇到Bug不要怕,无非两种情况,一,别人能处理,你暂时不能处理,最后你能处理,二、Google从来都没想过
一个coder要这么用代码,您珍重吧----绕行。
在解决一些陌生的Bug时,一开始是很痛苦的但是等真的解决掉,居然特么的上瘾了我了个xxx,我要打十个!
所以如果是解决bug的时候,首先是要能静下心自己分析代码逻辑,反复打日志,反复让程序炸;
反复看代码,查文档,问度娘;并且收集ex、error记录比对;逐一击破;然后你就上瘾了;
最后,以上情景适用个例,如有雷同请慎用。
同是天涯代码狗,相逢何必曾相识;开心,所以决定分享这次经历;若其他有疑问,大家共同探讨;
0 0
- 使用ViewPage过程中遇到的OOM及EX
- 使用tcollector及使用过程中遇到的错误
- Android中ViewPage的使用
- ASIHTTPRequest使用过程中遇到的问题及解决办法
- ASIHTTPRequest使用过程中遇到的问题及解决办法
- ASIHTTPRequest使用过程中遇到的问题及解决办法
- ASIHTTPRequest使用过程中遇到的问题及解决办法
- repo使用过程中遇到的一些问题及解决办法
- Intellij 在使用过程中遇到的问题及解决方法
- git&gerrit 使用过程中遇到的问题及解决方法
- Ubuntu使用过程中遇到的问题及解决办法
- Maven使用过程中遇到的问题及解决方案
- 在cocoaPods安装及使用过程中遇到的问题
- redis使用过程中遇到的问题及解决方法
- Caffe初学及使用过程中遇到的问题
- Redis安装及使用过程中遇到的问题
- Jmeter使用过程中遇到的问题及解决办法
- Egit使用过程中遇到的问题及解决办法
- 判断服务是否开启的工具类
- Opencv学习笔记1—打开显示图片
- Advanced Rest Client调试RESTFul
- CString 和 string, char * , char[], 以及其他类型之间的互相转换小结
- 笔尖心痛的流动,写着对你的思念
- 使用ViewPage过程中遇到的OOM及EX
- MyBatis(8)——Mybatis3.x与Spring4.x整合
- vs2015实现缓冲区溢出攻击
- 在努力的途中 忤逆满路荆棘
- Css 基础
- Data Guard Protection Modes(dg保护模式)
- pycharm快捷键及一些常用设置
- 孔子的学费
- swift简单学习之数据下载(AFN)