The*_*uja 3 heap android out-of-memory
我的应用程序在平板电脑上正常运行,它的内存非常少,约为20-30 MB,可以看到DBMS - > Debug&Heap tracker.但是当在三星Galaxy Note-4(2560 x 1440)和LG G3(2392 x 1440)等设备上运行相同的应用程序时,它在第一次活动时占用大约200MB的堆空间,然后不断增长.

我试图检查logcats是否存在内存泄漏和修复问题,检查游标和数据库实例是否也关闭了它们.尝试完成活动一旦转移到另一个.但仍然会出现"Out of Memory"错误.
尝试将堆大小增加到更大,但它没有帮助,因为内存不会以某种方式释放.
注意:我对整个应用程序使用相同的可绘制图像,没有创建其他设备的不同文件夹.整个图像大小约为4MB,其具有近400个图像,但在任何布局中一次仅使用15个图像.
经过3天的连续阅读后,我得到了问题的答案,最后问题解决了.
嗯,发生了什么事情
setBackgroundResource(R.drawable.imageName)
将导致Android首先做到
BitmapFactory.decodeResource()
实际上,这将基于屏幕密度进行一些重新采样(即,基于设备分辨率的自动密度重采样),这导致尺寸增长很多,对于PNG图像也是如此.
Android需要几乎10倍的空间来渲染PNG然后再渲染JPG,因此我的应用程序在任何活动中都会渲染10-15个PNG图像,因此耗费了大量空间.由于android没有释放内存空间,如果你的应用程序正在运行,会产生OOM (Out Of Memory)错误.
所以我做了什么的只是把res/drawable以res/drawable-nodpi/ (以防止自动的基于密度的重采样),我来分类的.
希望这也有助于其他人.
参考链接: