【发布时间】:2014-03-06 14:30:52
【问题描述】:
我创建了一个 Android 游戏,它使用了一些全屏位图 (4 @ 800x480) 和 10 个 Sprites (大约 80x80),所以它不是特别大。该游戏在具有 100mb 免费内存和 25mb 免费存储的旧 HTC Desire 上运行得非常好。它还可以在几款高端 HTC 手机、摩托罗拉 XOOM 平板电脑、Nexus 5、Nexus 7 和几款爱可视/Arnova 平板电脑上正常运行。但是,当我在三星设备(目前是三星 Galaxy Tab 2.0)上运行它时,它会在代码的位图加载区域出现内存不足错误,只能通过在 android manifest xml 中将大堆请求设置为 true 来解决太离谱了,因为除非我在 Play 商店中创建单独的应用程序,否则必须在所有设备上进行设置)。我最初认为这可能是由于从可绘制区域加载的图像,所以将其更改为资产,但没有区别。其他人遇到过这个问题并找到了解决方法吗?
失败的行是:-
retBitmap = BitmapFactory.decodeStream(res.getAssets().open(name+".png"));
或
retBitmap = BitmapFactory.decodeResource(res, res.getIdentifier(name, "drawable", con.getPackageName()));
根据我是从资产加载还是从可绘制对象加载,我之前也尝试过使用此选项:-
BitmapFactory.Options options = new BitmapFactory.Options(); options.inPurgeable = true;
但这没什么区别。有什么想法吗?
【问题讨论】:
标签: android bitmap out-of-memory