android背景图片分辨率,Android背景图片内存使用情况

博主在项目中遇到内存问题,尤其是使用高分辨率背景图像时,如一个1.19MP的PNG文件。理论计算加载该图像会占用2.39MB内存,但在实际操作中,内存增加了8MB(Nexus S)和11MB(Galaxy Nexus)。问题在于,加载图像导致的实际内存增加远超预期。目前的解决方案是降低图像分辨率或改变颜色格式,但这样做产生了不可接受的视觉效果。寻求解释和潜在的优化方案。
摘要由CSDN通过智能技术生成

我正在研究的项目使用了几个"高分辨率"背景(请注意引号).只是为了进入情境,其中一个是640x935 1.19M PNG文件.据我所知,即使Android将图像作为原始数据解压缩到内存中,这应该是:

640 x 935 x 4bytes = 2.39M

我的项目中存在内存问题,我无法理解,希望有人可以对此事进行阐述.我将列出我正在开发的两个设备以及一些结果.

为了确保这不是次要问题,我在第一次创建活动时没有加载背景,然后当用户按下按钮时,它所做的只是:

findViewById(R.id.completed_block_background).setBackgroundResource(R.drawable.blockbackgroundbottom1);

然后,在进程上使用带有"Update Heap"的DDMS(并且首先强制GC确保这不会成为问题),我得到以下内存结果:

Nexus S:从18M上升到26M(8M差异)

Galaxy Nexus:从28M到39M(11M差异)

因此,正如您所看到的,将理论上2.39M未压缩的图像放入背景实际上会增加8M和11M的内存使用量.有人可以解释为什么这个以及是否有任何解决方案?

我能找到的唯一解决方案是使用位图将分辨率减半或降低通道格式(到目前为止,这就是我所做的,将它们切换为565 RGB,但这会产生一些我无法接受的条带问题).

如果没有什么可以做的话,我也会接受解释为什么会这样.提前致谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值