2014-04-11 3 views
0

특정 시간에 무언가를 실행하는 문제가 있습니다. 내 앱에는 특정 시간에 메소드를 실행하는 Runnable 클래스가 있습니다. 문제는 때때로 Runnable에 3000 ms 대신 4000 ms가 필요하다는 것입니다. 이 문제를 해결할 수있는 방법이 있습니까?올바른 처리기 지연 시간

코드 : 주석에 명시된 바와 같이

private Handler myhandler; 

//onCreateMethod 
myhandler = new Handler(); 


//runnable class   
    private Runnable myRunnable = new Runnable() { 
     public void run() {  
      methodToExecute(); 
      myhandler.postDelayed(this, 3000); 
        } 
       }; 
+0

수 : 누군가가 언젠가 필요하면 여기

는 솔루션입니다 예를 들어

코드를 게시 하시겠습니까? –

+0

번호. 안드로이드는 실시간 os가 아닙니다 – Blackbelt

+0

그래서 실제로, 당신의 문제는 무엇입니까? – pskink

답변

2

더 정밀도를 필요로하는 경우는, Handler.postDelayed 사용하지만, 오히려 어쨌든 타이머

를 사용하지 않는이, 안드로이드는 실시간 운영 체제되지 않습니다 하지만 2900에서 3100 ms 사이의 정밀도를 가져야합니다.

Timer.schedule(timerTask, 3000); 
+0

타이머 많이 도움이 – pskink

+0

왜? 핸들러보다 더 정확합니다. 더 긴 루프를 가지고 있습니다. –

+0

괜찮 으면 좋겠지 만, UI 스레드와 상호 작용할 필요가 없을 때만 그렇지 않으면 타이머를 사용할 의미가 없습니다. – pskink

0

이 타이머 (감사 @Yves Delerm)와 함께 잘 작동 보인다 : 당신

private Timer myTimer; 
private int TIMERINTERVAL = 3000; 

// inside onCreate 
myTimer = new Timer(); 
myTimer.schedule(new TimerTask() 
{ 
    @Override 
    public void run() 
    { 
     myMethod(); 
    }}, 0, TIMERINTERVAL); 



private void myMethod() 
{ 
     // Some code 
}