- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于android使用bitmap的OOM心得与解决方案
关于android使用bitmap的OOM心得和解决方案
android开发,从2010年开始学习到现在的独立完成一个app,这漫长的四年,已经经历了很多次bug的折磨,无数次的加班训练。然而,自以为自己已经比较了解android了,却最近在一个项目上,因为oom而折腾了一个周,回到原地,认识了自己的不足,感觉自己是如此的菜鸟呀。
好了,不废话,大家在使用开发android的时候,很少会注意或者意识到释放内存的重要性,因为大家在使用过程中,涉及的图片资源不多,或者比较稳定,来回切换界面,图片也就那么几张或者使用的都是很小的图片,根本不会感觉到图片占用内存可能引发的潜在危机。
如果你的程序中,使用了一下功能,你作为一个合格的android开发工程师,你有必要,注意oom的潜在危机1.界面比较多,并且很多界面的背景图片不一样;
2.涉及到换肤功能,定义多种皮肤,皮肤的资源不是使用color 而是图片资源;
以上两种情况,如果你不注意合理的释放内存,你将会为自己程序莫名其妙的崩溃付出代价的。
我们在android程序中,无论是使用layout布局设置了背景还是使用了setBackgroundResource 设置背景,你都以为不需要释放内存?这绝对是一个错误的观念,绝对的错误。也许这一点的错误的认识,将会在大屏幕手机上,暴露出来你的oom的现象,特别是在三星的大屏幕手机,爆oom的几率更大。
也许,大家在使用开发中,会注意这一点,使用了一下方式去解决释放内存(网上很多例子都是使用该方式去释放内存),比如:
HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥èˉ?????????ˉ?o???¨?o¤?μ??13??°.htm \l viewSource \o view source view source HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥èˉ?????????ˉ?o???¨?o¤?μ??13??°.htm \l printSource \o print print HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥èˉ?????????ˉ?o???¨?o¤?μ??13??°.htm \l about \o ? ?
01.View view = findViewById(R.id.page_bg);
02.BitmapDrawable bitmapDrawable = (BitmapDrawable) view.getBackground();
03.view.setBackgroundResource(0);
04.bitmapDrawable.setCallback(null);
05.Bitmap bitmap = bitmapDrawable.getBitmap();
06.if(bitmap !=?null? !bitmap.isRecycled()){
07.bitmap.recycle();
08.bitmap =?null;
09.}
10.System.gc();
从我们的测试效果来看看logcat 打印出来的结果
HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥èˉ?????????ˉ?o???¨?o¤?μ??13??°.htm \l viewSource \o view source view source HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥èˉ?????????ˉ?o???¨?o¤?μ??13??°.htm \l printSource \o print print HYPERLINK D:\\??3?o?android?????¨bitmap???OOM?????????è§£??3??1??? - Android - ???????????1??? - ??μè????¥
文档评论(0)