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