2011-03-25 4 views
3

작은 게임을 위해 밀리 초 정확한 타이머를 구현해야합니다. 어떤 방법이 가장 적합할까요? 나의 현재 접근 방식은 System.currentTimeMillis()를 사용하는 것이다. 충분히 잘 작동하는 것 같지만, 내가 모르는 어떤 함정이있을 수 있습니다. 타이밍에 대한 표준 접근 방식은 무엇입니까?Android 간단한 타이밍 질문

답변

8

타이머는 시스템에서 구현 한 것만 큼 유용합니다. 그것은 단순히 그것보다 좋아지지 않을 것입니다.

전직 전문 게임 개발자이므로 (아직도 프로젝트를 수행하고 있습니다.) 밀리 초 단위의 정확도 요구 사항을 권장합니다. 당신은 아마 그것을 필요로하지 않습니다.

이 프로그램을 사용하여 시계의 정확성을 확인합니다

/* 
C:\junk>javac TimerTest.java 

C:\junk>java TimerTest 
Your delay is : 16 millis 

C:\junk> 
*/ 
class TimerTest { 

    public static void main(String[] args) { 
     long then = System.currentTimeMillis(); 
     long now = then; 
      // this loop just spins until the time changes. 
      // when it changes, we will see how accurate it is 
     while((now = System.currentTimeMillis()) == then); // busy wait 
     System.out.println("Your delay is : " + (now-then) + " millis"); 

    } 
} 
+0

너무 많은 것들이 같은 컨텍스트 스위치로 그 프로그램의 출력에 영향을 미칠 수있는 것 같다. 나는'currentTimeMillis' 정확성에 너무 많은 압력을 가하지 않는 것이 옳다고 생각합니다. –

+1

@Matthew, 당신은 절대적으로 맞습니다. 내가 수없이 많은 시간을 실행할 때, 일관된 16 또는 17을 얻었습니다. 결코 변하지 않았습니다. 당신은 내가하려고하는 정확한 지점을 만듭니다 :'currentTimeMillis'의 정확성에 의존하지 마십시오. – corsiKa

+0

데이터를 제공해 주셔서 감사합니다. 그게 재미있어! –