2016-06-22 2 views
0

일부 용도로 타이머를 사용해야하는 응용 프로그램을 개발 중입니다. 내가해야 할 일은 조건이 충족 될 때 타이머를 설정하고 그에 상응하여 타이머를 취소하는 것입니다. 그런 다음 내가 다시 취소 한 동일한 타이머를 시작할 수 있습니다. 해결책을 제시하십시오.취소 후 타이머 재사용

+0

동일한 타이머를 사용할 수 없습니다. 그래서 그것의 새로운 인스턴스를 만들어야합니다. – aravindkanna

답변

0

단일 타이머의 경우 Android는 단일 스레드를 설정합니다. 해당 타이머를 취소하면 실행 스레드가 정상적으로 종료되고 더 이상의 작업이 예약되지 않습니다. 따라서 타이머 객체의 새 인스턴스를 만들어야합니다. 아래와 같이 할 수 있습니다.

if(condition == true) 
{ 
timer = new Timer(); 
    timer.schedule(new TimerTask(), delay, span); 
} 
else{ 
    timer.cancel(); 
} 
0

같은 CountDownTimer 클래스 만들기 :

public class MyCount extends CountDownTimer { 
       public MyCount(long millisInFuture, long countDownInterval) { 
        super(millisInFuture, countDownInterval); 
       } 

       @Override 
       public void onFinish() { 
        // do something of finish timer 
      } 

      @Override 
      public void onTick(long millisUntilFinished) { 
       // do something on tick of timer 
      } 
     } 

을 아래처럼 MyTimer로의 객체를해야한다 :

MyCount timerCount = new MyCount(<TIME_UNTIL_FINISH_MILLISECONDS>, <TIME_OF_EACH_TICK>); 

어디서나 당신이 원하는 타이머를 시작할 수 있습니다

timerCount.start(); 

및 취소 :

timerCount.cancel(); 
관련 문제