加载Drawable图片时出现的oom问题

本文探讨了在Android开发中遇到的内存溢出(OOM)问题,特别是由于加载大量图片作为animationDrawable引起的。通过分析问题原因,如setBackground方法会根据设备分辨率重新编码图片,增加内存负担,提出了解决方案。将图片放入drawable-nodpi包可以避免尺寸调整,但当图片数量增加时仍可能引发OOM。最终,采用decodeStream方法读取bitmap字节码流,减少内存占用,有效防止了内存溢出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oom问题全称为out of memory (内存溢出),指在加载资源时,资源所占空间超过了应用程序分配的内存空间。


今天在做射击游戏的项目时,加载了20多张图片做了一个animationDrawable动画,预加载动画作为ImageView的background


iv_gun.setBackground(animationDrawable);


结果在一些高分辨率的机器上跑的时候,程序报出OOM错误,在加载背景动画的这一行,在网上找了很多方法,其中一个解决了问题:

点击打开链接

大概意思就是,setBackground方法会根据分辨率的高低重新编码图片,所以有时候会导致图片的大小增大,导致内存溢出

所以解决方法就是新建drawable-nodpi包,并将所有图片放入此包中,然后程序就不会对图片重新进行大小的改变.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值