Android游戏中的表现

时间:2014-03-18 11:48:06

标签: java android performance

我为Android编写了一个游戏。对于每个帧,我使用相同的过程。

所以我的游戏运行顺畅,但在某些时刻游戏卡住了。我在方法中使用deltaTimes进行搜索,但找不到问题并不容易。

在帧之间deltaTime的图片中:frame time您可以看到峰值。在高峰之间,比赛顺利进行。

所以我的问题是,你知道一个探测器或类似的日食以找到峰值的原因吗?或者你知道一个网站有关于Android游戏开发的表现tipps吗? 垃圾收集器不是它,因为在调试控制台中消息不会出现。

//编辑1: 在搜索更多性能tipps之后,我添加了一个自定义主题类:

<resources>
    <style name="Theme.NoBackground" parent="android:Theme">
        <item name="android:windowBackground">@null</item>
    </style>
</resources>

这给了我更好的表现,但仍然有很高的峰值。 second performance test

3 个答案:

答案 0 :(得分:1)

这些类型的峰值的最大原因之一是当垃圾收集开始时。如果你说一个气泡的arraylist,并且每个气泡包含一个图像,你会使用一个池系统来重用泡沫而不是让垃圾收集器收集,这会导致这些峰值。

在游戏运行时应避免垃圾收集,并且应在游戏开始时加载资源。

这里的一些文章可能对您有用..

Avoid using the enhanced for-loop for ArrayLists in Android games

Object pooling for android gaming

答案 1 :(得分:0)

您可以使用traceview查看您在哪里度过的时间 Profiling with traceview

Android提供了一些最佳实践,以提高应用程序的性能 Performance Tips

答案 2 :(得分:0)

它看起来像垃圾收集。要验证这一点,您可以过滤以&#34; GC _&#34;开头的logcat消息。在运行游戏时。

其他人已经发布了解决问题的提示,这就是我要添加的内容:查看包含new()运算符的每一行,并考虑实例创建的最终位置。如果是在比赛期间,则应该进行更改。