【问题标题】:Android Excessive delay reading vsyncAndroid过度延迟读取vsync
【发布时间】:2015-11-20 22:47:42
【问题描述】:

我正在使用 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 fps 左右。我已经分析了我的游戏并且没有 dalvik 内存回收。所以滞后是 100% 不是由内存泄漏引起的。有没有人找到解决方法或遇到过这个问题?

【问题讨论】:

  • 您是否监控过 CPU/GPU 使用情况?也许设备由于某种原因降低了那里的频率。
  • 这个问题可能是什么原因?我发现了一个类似的问题stackoverflow.com/questions/25017352/… 但没有答案
  • 这可能是很多事情,很难说是什么导致了你的情况。但是已经提到的事情绝对可能是问题所在。除了硬件/Android 原因之外,它还可以是省电或电池功能。我自己在加载大量资源/资产的 3D 游戏中遇到了这个问题,所以如果您也是这种情况,请尝试看看如果您卸载所有未使用的资产或减少大小和/或数量,性能是否有任何变化其中。此问题不会在 CPU/GPU 或内存分析中显示。

标签: android libgdx


【解决方案1】:

我没有开发任何游戏,所以对 VSync 主题不太熟悉。但是,我认为可能会出现滞后的原因有 3 个:

  1. 您的代码或资产中存在问题。例如,在 5-10 分钟后分配的许多对象或在那一刻显示的特定“重”级部分/效果。如果您主动使用触摸屏,则可能会出现问题,因为大量的MotionEvent 存储在操作系统的队列中等待处理。
  2. 有一个背景 ServiceBroadcastReceiver 会在您的设备上按计时器运行。它可能会在 UI 线程上执行繁重的任务,从而导致滞后。
  3. 设备硬件出于某种原因认为您不需要太多 GPU / CPU或两者的功率和低频率。这是固件或硬件问题。您可以在设备开发者设置中启用性能监视器进行检查。

还可以查看this 主题。它提供了有关如何监控 UI 性能的信息,包括每个阶段的帧处理。

【讨论】:

  • 1 被排除在外 - 正如我所说的那样,当滞后发生时没有 CG 2. 是可能的,因为我有计时器。我该如何调试呢? 3. 可能 但是,可能都不是。所以我更感兴趣的是你是否知道具体是什么导致了这个问题
猜你喜欢
  • 2018-11-01
  • 2018-01-04
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2015-08-17
  • 2016-11-18
相关资源
最近更新 更多