2013-04-17 2 views
0

정확성 때문에 Timer()가 사용되지만 PostDelayed Handler와 동일하게 작동합니다. 한 번만 불렀습니다. 실행Android Java Timer()

public void setWFT() { 
     WFT = new Timer(); 
     WFT.schedule(new TimerTask() {   
      @Override 
      public void run() { 
       WFTTimerMethod(); 
      } 
     }, 60000); // 60 seconds delay 
    } 

    private void WFTTimerMethod() { 
     this.runOnUiThread(Timer_Tick); 
    } 

    private Runnable Timer_Tick = new Runnable() { 
     public void run() { 
      // My commands here 
     } 
    }; 

이 통화 만()를 한 번 타이머 번 60초가 시작된 후에 다음은 타이머 코드입니다. 때로는 지연을 업데이트하기 위해 타이머를 취소해야합니다 ("60000"값 대체). Timer를 다시 시작하려면 새로운 지연 값으로 WFT()를 다시 호출하여 Timer를 다시 작성하기 만하면됩니다.

WFT.cancel(); 
WFT.purge(); 

타이머가 시작되지 않습니다 내가 사용 타이머를 취소 할 때

문제이다. run()은 가정 될 때 실행되지 않습니다. 그래서 내 질문에 취소() 및 제거() 또는 그냥 취소() 사용합니까?

감사 purge()

답변

3

From the Java API :

대부분의 프로그램은이 메소드를 호출 할 필요는 없습니다. 그것은 많은 작업을 취소하는 드문 응용 프로그램에서 사용하도록 설계되었습니다. 이 메소드를 호출하면 시간을 절약 할 수 있습니다. 메소드의 런타임은 n + c log n에 비례 할 수 있습니다. 여기서 n은 대기열의 작업 수이고 c는 취소 된 작업 수입니다.

그래서 당신은 단지 cancel() 문서에서 cancel()

+0

또한 내 Timer()는 PostDelayed처럼 동작하며 앞으로 60 초에 한 번만 호출되므로 취소하기 전에 타이머를 취소하고 파기합니다. 그렇지 않으면 내 Timer()에 아무런 영향을 미치지 않습니다. 한 번만 처형 될 예정 이니? – KickAss

+0

동일한 API 링크에서 :'cancel()' "현재 예약 된 작업을 버리고이 타이머를 종료합니다. (존재하는 경우) 현재 실행중인 작업을 방해하지 않습니다. 타이머가 종료되면 실행 스레드는 정상적으로 종료되고, 더 이상의 작업을 계획 할 수 없습니다. " 그러면 앞으로 예정된 모든 일정이 취소됩니다. –

+0

오케이 :) 완벽합니다. 고맙습니다 – KickAss

0

를 호출해야합니다

더 이상 작업이 타이머에 예약 할 수 있습니다.