Android画布在Droid上的性能糟糕

Android画布在Droid上的性能糟糕,android,performance,android-canvas,Android,Performance,Android Canvas,在过去的几个月里,我一直在为Android开发一款游戏,它就要完成了。我最近买了一个摩托罗拉机器人用于测试,因为我用HTC开发了这个游戏。在我难以置信的速度下,我可以在整个比赛中获得相当稳定的59 fps。在机器人上,游戏变得非常起伏不定,平均每秒约40帧。两款手机都运行安卓2.2 我查阅了技术规格,这里是我注意到的唯一可能影响游戏性的差异:1GHz处理器与550MHz,512MB内存与256MB内存 只是为了好玩,我想我会把游戏简化到一个非常简单的状态,看看这是否是我的代码造成的。我把它精简到

在过去的几个月里,我一直在为Android开发一款游戏,它就要完成了。我最近买了一个摩托罗拉机器人用于测试,因为我用HTC开发了这个游戏。在我难以置信的速度下,我可以在整个比赛中获得相当稳定的59 fps。在机器人上,游戏变得非常起伏不定,平均每秒约40帧。两款手机都运行安卓2.2

我查阅了技术规格,这里是我注意到的唯一可能影响游戏性的差异:1GHz处理器与550MHz,512MB内存与256MB内存

只是为了好玩,我想我会把游戏简化到一个非常简单的状态,看看这是否是我的代码造成的。我把它精简到只剩下画主菜单和在屏幕上移动各种位图的地步。一根头发都不超过45帧/秒

那么,这是摩托罗拉机器人的近似上限吗?如果是这样的话…我的游戏非常简单,不需要CPU,那么我能做什么呢?还有数千款Android游戏比我自己的要求更高,但它们运行起来似乎非常平稳

是因为我使用的是Android内置的画布,而不是OpenGL或其他替代品吗?有人会推荐这样做吗

有人能告诉我这里有什么问题吗


提前感谢。

OpenGL ES是一个不错的选择。Canvas最有可能是在OpenGL ES上实现的,但它的声音并不是很有效。

40fps非常好,人眼只能在帧率低于25fps时检测到抖动。任何高于15帧/秒的动作都被视为“全动作”

如果你能看到抖动,那么可能是游戏暂停,而垃圾收集器启动了-你可以通过减少创建的对象数量来减少抖动,你应该能够通过使用ddms看到抖动的发生


除此之外,在计算帧速率时可能会出现问题?

我必须在下一场比赛中研究这个问题。你觉得安德林怎么样?但就目前而言……我可能已经花了100多个小时在这个应用程序上,所以简单地把它扔出窗外是不可能的。除了完全从头开始,还有其他选择吗?Canvas是Android 3.0之前的软件。@adamp那么这是否意味着Canvas不能像OpenGL那样直接访问硬件?因此,它没有那么快/强大的原因是什么?