我正在编写 2d 教程,并且能够在三星 Galaxy Tab 上测试我当前的教程部分。
本教程只是在屏幕上随机移动默认图标。轻按一下,我创建了一个新的移动图标。只要屏幕上有 25 个或更少的元素,Galaxy 上的一切都可以正常工作(恒定为 60fps)。
使用第 26 个元素,帧速率降至 25fps。
当我将图像的大小/尺寸更改为更大时,我在第 26 个元素之前达到不到 25fps。没关系。但是在某些不可重现的元素数量下,帧从(大部分超过)10fps 下降到 1fps。
在我的 Nexus One 上,我可以添加 150 个元素并且仍然有 50fps。
我所做的:我将位图变量更改为静态变量,因此并非每个元素都有自己的图像,但都使用相同的图像。这消除了这种行为,但我怀疑这个解决方案是一个好的解决方案。神奇的数字 25 表明我只能以这种方式使用 25 个不同的图像。
有人知道什么会导致这种行为吗?是三星修改安卓版的bug吗?
我的示例 Eclipse 项目可用。如果一些三星所有者能用样品检查他们的性能,我将不胜感激。
编辑
一位同事找到了解决方案。他改变了位图的加载方式
mBitmap = BitmapFactory.decodeResource(res, R.drawable.icon);
到
mBitmap = BitmapFactory.decodeStream(new BufferedInputStream(res.openRawResource(R.drawable.icon)));
但我们仍然不明白为什么它会这样工作......