我正在寻找一种将一些代码活动同步到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/

10-10 02:45