位图工厂内存错误,图像较小?

时间:2014-05-23 18:52:54

标签: android memory bitmapfactory

希望有人可以帮我解决这个问题。

我只使用UI元素在Android 4.2.2上制作了一个非常简单的游戏,即没有3D,opengl,真的是一个挑战,但我已经遇到了一个小脑袋疼痛。

我有加载图形的O.O.M问题(预计用android)所以我寻找其他路线并找到位图工厂并决定使用一个简单的实现。在我的图像中,我在游戏过程中分配了40mb的内存,因此我将文件从1080x1920x4bit减少到540x960x4bit,以期减少内存负荷,但现在游戏时达到了72mb。

我错过了什么或是我在想,将图像大小减半并将内存使用量减半?或升级使用更多?

有什么方法可以将这个内存量减少到16-20mb范围?

关于APP的说明。 所有图像都存储在res / no-dp或res / xxdpi中。都是jpegs。

我有六个弹出图像,分别是100x100dp jpegs和5 x生命段,分别是50x50dp

这是用于从位图工厂加载图像的代码

Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.dummy1nn);
             button7.setImageBitmap(bMap);

我现在通过按钮或图像视图加载其他图像作为背景资源。

我还在元素和计时器上运行soundpool。

任何帮助将不胜感激。我不想发布我的所有代码,因为它是一个正确的混乱,因为我尝试了许多不同的方法来使这项工作顺利进行。我唯一的问题是内存负载。

运行游戏并让它静置5分钟后,我目前的记忆是: - 堆大小 - 73.086mb 分配 - 70.40mb 免费 - 2.625mb 二手 - 96.41% 对象 - 47,161

我使用LG Nexus 5'锤头'作为具有解锁引导程序和库存ROM的DEV设备。

谢谢你们。 :)

编辑: 答案是使用毕加索,虽然有一些图像库,我很喜欢毕加索的简单性。并且在使用图像时总是使用MAT来对质量/大小和格式进行相关更改以获得最低内存打印(我的峰值降至26mb) 玩得开心

1 个答案:

答案 0 :(得分:0)

Picasso是一个非常好的库,可以为您处理内存管理,异步加载和缓存。

使用您的示例,它将像这样使用:

Picasso.with(this).load(R.drawable.dummy1nn).fit().into(button7);