我正在寻找一种将一些代码活动同步到Android显示帧速率的方法。这是一小段代码,可以简单地设置小显示区域的颜色,仅此而已。我可以为此目的利用某种方法或挂钩吗?
我可以使用一个以非常快的时间间隔成功运行的计时器,但是渲染似乎会受到帧频的干扰。例如,我的帧速率为60 Hz,因此如果将计时器间隔设置为1/60秒,则外观将不均匀。我无法将计时器精确设置为16.666毫秒,即使可以,我仍然会看到锯齿。
谢谢。
最佳答案
经过一些搜索和试验后,一种解决方案是使用Choreographer类,该类提供了一种将回调函数挂接到帧速率中的方法。下面是代码。我发现它在慢速手机上显示时间草率。最新型号的三星手机性能更好。
private FrameCallback frameCallback = null;
private boolean frameCallbackPending = false;
public void armVSyncHandler() {
if(!frameCallbackPending) {
frameCallbackPending = true;
if(frameCallback == null)
{
frameCallback = new FrameCallback() {
@Override
public void doFrame(long frameTimeNanos) {
frameCallbackPending = false;
// Do some work here
armVSyncHandler();
}
};
}
Choreographer.getInstance().postFrameCallback(frameCallback);
}
}
关于java - 如何同步到Android帧频,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44036646/