본문 바로가기

소프트웨어/Android/Java/Ndk

안드로이드 Timer 사용2 (Timer, timerTask)

저번 안드로이드 Timer 사용1 (Timer, timerTask)에서는 timer를 죽이지 않고 그냥 progressbar만 초기화 하였다.

이번에는 timer를 완전히 stop시키는 방법으로 진행을 해보겠다.

 

 

단순하게 앞 강의의 소스에

public void stopTimer(){
  if(timerTask != null){
   timerTask.cancel(); //타이머task를 timer 큐에서 지워버린다
   timerTask=null;
  }
  if(timer!=null){
   timer.cancel(); //스케쥴task과 타이머를 취소한다.
   timer.purge(); //task큐의 모든 task를 제거한다.
   timer=null;
  }
 }

를 추가해주면 된다. 각 매서드의 용법은 주석으로 달아놨다.

 

그리고

public void decreaseBar(){
  runOnUiThread(
   new Runnable() {
    
    @Override
    public void run() {
     // TODO Auto-generated method stub
     int currprog=prog.getProgress();
     Log.d("mstag", currprog+"");
     if(currprog>0){
      currprog=currprog-1;
      prog.setProgress(currprog);
     }else if(currprog==0){
      //currprog=6;     
      stopTimer();     
     }
     
     //Log.d("mstag",""+timerTask.scheduledExecutionTime());
    }
   }
  );
 }

원래 소스에서 progbar가 0이됬을때 단순하게 다시 progbar만 6으로 돌렸는데 이부분을 지우고 맨 위에 새로 추가한 소스를 불러주면 된다.

이렇게되면 동영상에서 처음 동작하는 화면이 동작한다. 단순하고 감소카운트를 수행하고 타이머가 끝난다.

만약 1강의에서와 같이 계속해서 반복되는 동작을 원한다면

 

빨간색밑줄밑에

강의1에서 만들어 놓은

initProg();
startTimerThread();

를 추가하면 된다.

그러면 동영상에서 후반부 동작을 하게된다.