希望有人可以帮我解决这个问题。
我只使用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) 玩得开心
答案 0 :(得分:0)
Picasso是一个非常好的库,可以为您处理内存管理,异步加载和缓存。
使用您的示例,它将像这样使用:
Picasso.with(this).load(R.drawable.dummy1nn).fit().into(button7);