2012-04-05 4 views

답변

22

Timer을 사용하면 schedule- 방법 중 하나를 사용하여 TimerTask을 예약 할 때 자동으로 새 스레드가 생성됩니다.

예 :이 한번 그 타이머 매초 속하는 스레드의 실행 myTimerTask 타이머를 생성

Timer t = new Timer(); 
t.schedule(myTimerTask, 1000L); 

.

+0

위의 코드는 1 초 후에 한 번만 스레드에서 작업을 실행하는 '타이머'를 만듭니다. 매 초마다 한 번씩 작업을 실행하려면 'schedule (TimerTask task, long delay, long period)'과 같은 오버로드 된'schedule' 메소드를 사용하십시오. 예를 들어,'timer.schedule (myTimerTask, 1000L, 2000L)'은 1 초의 초기 지연 후에 매 2 초마다 실행되는 타이머를 생성합니다. 다음은 [link] 메소드에 대한 링크입니다 (https://developer.android.com/reference/java/util/Timer.html#schedule (java.util.TimerTask, long, long)) [link] –

+0

링크 위의 코멘트에서 잘못 포맷되었습니다. 다음은 [Timer의 방법] (https://developer.android.com/reference/java/util/Timer.html)에 대한 수정 된 링크입니다. –

47

나는 이런 식으로 뭔가를 구현하고 그것을 잘 작동합니다 :

private Timer mTimer1; 
    private TimerTask mTt1; 
    private Handler mTimerHandler = new Handler(); 

    private void stopTimer(){ 
     if(mTimer1 != null){ 
      mTimer1.cancel(); 
      mTimer1.purge(); 
     } 
    } 

    private void startTimer(){ 
     mTimer1 = new Timer(); 
     mTt1 = new TimerTask() { 
      public void run() { 
       mTimerHandler.post(new Runnable() { 
        public void run(){ 
         //TODO 
        } 
       }); 
      } 
     }; 

     mTimer1.schedule(mTt1, 1, 5000); 
    } 
+1

멋진 답변 ... 왜 upvotes가 없습니까? .... –

+0

일정에 따른 1은 무엇입니까? – Praneeth

+0

1 일정은 예약 된 TimerTask를 처음 실행하기 전의 시간 (밀리 초)입니다. 5000은 후속 실행 사이의 지연 시간 (밀리 초)입니다. – Cogentleman

7

이 타이머 작업에 대한 완벽한 예입니다.

Timer timerObj = new Timer(); 
    TimerTask timerTaskObj = new TimerTask() { 
     public void run() { 
      //perform your action here 
     } 
    }; 
    timerObj.schedule(timerTaskObj, 0, 15000);