我为安卓编写了一个游戏。对于每一帧,我都使用相同的程序。
所以我的游戏运行流畅,但有时游戏会卡住。我在methods中用deltaTimes搜索了一下,发现问题不大。
在图片中,帧之间的 deltaTime:你可以看到山峰。在高峰之间,游戏运行流畅。
所以我要问你的问题是,你知道 eclipse 中的探查器或类似工具可以找到峰值的原因吗?或者您知道一个提供 Android 游戏开发性能提示的网站吗?
垃圾收集器不是它,因为在调试控制台中消息不会出现。
//编辑1: 在搜索更多性能提示后,我添加了一个自定义主题类:
<resources>
<style name="Theme.NoBackground" parent="android:Theme">
<item name="android:windowBackground">@null</item>
</style>
</resources>
这给了我更好的表现,但仍然有一个高峰。
最佳答案
这些类型的尖峰的最大原因之一是当垃圾收集开始时。如果你说了一个气泡数组列表,并且每个气泡都包含一个图像,你会使用一个池系统来重用气泡而不是让垃圾收集器收集,这会导致这些尖峰。
游戏运行时应避免垃圾收集, Assets 应在游戏开始时加载。
这里有些文章可能对你有用..
Avoid using the enhanced for-loop for ArrayLists in Android games
关于java - 安卓游戏性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22478478/