640 x 935 x 4bytes = 2.39M
我的项目存在内存问题,但我无法真正理解它,希望有人能够解决这个问题。我将列举两个我正在开发的设备和一些结果。
为了确保这不是一个次要问题,我创建了一个活动,当它首次创建时不加载背景,然后当用户按下按钮时,它所做的就是:
findViewById(R.id.completed_block_background).setBackgroundResource(R.drawable.blockbackgroundbottom1);
然后,使用DDMS在进程上执行“更新堆”(并首先强制GC以确保这不会成为问题),我得到以下内存结果:
Nexus S:从18M增加到26M(差异为8M)
Galaxy Nexus:从28M增加到39M(差异为11M)
因此,正如您所看到的,将那个理论上未压缩的2.39M图像放入后台实际上会增加8M和11M的内存使用量。有人能解释一下为什么会这样,并且是否有任何解决方案吗?
我找到的唯一解决方案是使用位图减半分辨率或降低通道格式(到目前为止,这就是我所做的,将它们切换到565 RGB,但这会导致一些条纹问题,我无法接受)。
如果没有办法,我也会接受一个解释为什么会发生这种情况。提前感谢您。