經過一番搜索和試驗後,一種解決方案是使用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);
}
}