【发布时间】:2012-10-24 04:15:54
【问题描述】:
我正在通过 OpenGL 渲染对象,并且在大多数情况下都能获得 60fps 的平滑帧速率。 直到我在后台线程中做一些繁重的事情,比如从 REST API 中获取东西,处理它,然后将对象添加到图中(低优先级的东西,我更关心 UI 流动性)。然后渲染器将暂停很长一段时间,最多 1 秒(大约只要后台线程运行),然后像什么都没发生一样恢复。我注意到这一点是因为动画同时开始,并且在此期间卡住了。后台线程设置为最低优先级,垃圾收集确实需要 100-200 毫秒,但不是整个秒。当我在后台任务中的任意位置设置调试点时,渲染继续正常,没有任何延迟。
我繁重的后台线程是否有可能饿死 OpenGL 线程?如果是这样,我该怎么办?
【问题讨论】:
-
看起来很像this performance trace...
-
不知道是什么 GPU,它是 Galaxy Nexus。回家后在模拟器上测试一下。
-
Stefan,您发布的帖子提到“有点迟钝”,而我有整整一秒钟没有渲染。我不认为这是相关的。
-
你需要在我的名字前加一个@,否则我不会收到通知。该跟踪清楚地显示线程没有并行运行。无论是小任务还是重任务,都无所谓。你是对的,我不能说它真的很相关......
标签: android opengl-es frame-rate