我使用NativeActivity编写了一个OpenGL ES 2应用程序,它渲染了大约6个纹理三角形,您可以使用触摸输入拖动它们。应用程序尽可能快地呈现,在呈现之前调用glClear()
,在呈现之后调用eglSwapBuffers()
。正如预期的那样,帧速率被限制在大约60 fps的显示频率,并且场景平滑地移动。但是,经过一段时间(10到60秒)后,即使帧速率仍为60 fps,运动也开始出现断断续续的情况。我使用的设备是OnePlus 3。
起初我怀疑罪魁祸首是省电模式,但调查发现cpus'之间没有相关性。频率和口吃。
我注意到了一些有趣的事情,当queueBuffer()
执行时间结束时,口吃开始了。
这是口吃之前的systrace : 这是口吃之后的systrace : 这是从之前到之后的过渡期间的系统:
如何停止应用程序的口吃?
答案 0 :(得分:0)
我仍然不知道口吃的确切原因,但我设法找到了解决办法:仅在 var customerData = [
{
firstName: 'Jacob',
visits: 3
},
{
firstName: 'bocaj',
visits: 2
}
];
for (var customer of customerData) {
console.log(customer.firstName, customer.visits);
}
上渲染帧并在将来将public Collection<Object> getCollection() {
return new ArrayList<>(getListMap());
}
设置为两个vsyncs 。这样可以避免填满缓冲队列,这似乎是口吃的原因之一。
作为奖励,它还略微改善了触摸输入延迟。