2017-05-18 64 views
0

我正在尋找一種方法將某些代碼活動與Android顯示幀速率同步。這是一小段代碼,它只是簡單地設置一個小的顯示區域的顏色,僅此而已。是否有某種方法或鉤子可以用於此目的?如何同步到Android幀速率

我可以使用定時器以非常快的間隔成功運行,但渲染看起來會受到幀速率混疊的影響。例如,我的幀速率是60赫茲,所以如果我將計時器間隔設置爲1/60秒,則外觀不均勻。我無法將定時器設置爲16.666毫秒,即使可以,我仍然會看到別名。

謝謝。

回答

0

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