Android过度延迟读取vsync

时间:2015-11-20 13:52:46

标签: android libgdx

我正在使用libgdx制作一款安卓游戏。我注意到,经过一段时间说5-10分钟后,偶尔会出现fps突然无法解释的延迟。我从60-61到40,35,25,27等。在logcat中显示的错误是:

  W/qdhwcomposer(209): Excessive delay reading vsync: took 47 ms
  W/qdhwcomposer(209): Excessive delay reading vsync: took 35 ms
  etc.

持续约30秒,持续几分钟,非常烦人。之后它恢复了,我仍然得到大约60帧/秒。我已经描述了我的游戏,并没有dalvik记忆回收。所以滞后是100%不是由内存泄漏引起的。有没有人找到修复或遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

我还没有开发任何游戏,所以不太熟悉VSync主题。但是我建议由于3个原因可能会出现滞后:

  1. 您的代码或资产中存在问题。例如,对于在5-10分钟后分配的大量物体或特定的"重"在那一刻显示水平部分/效果。如果您积极使用触摸屏,则可能会因为大量MotionEvent存储在操作系统的队列中等待处理而出现问题。
  2. 通过计时器在您的设备上运行后台ServiceBroadcastReceiver。它可能会在UI线程上执行繁重的任务,从而导致滞后。
  3. 设备硬件由于某种原因认为您不需要太多 GPU / CPU或两者的功率和低频率。这是固件或硬件问题。您可以在设备开发人员设置中启用性能监视器以进行检查。
  4. 还查看this主题。它提供了有关如何监控UI性能的信息,包括每个阶段的帧处理。