마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

카운트다운 타이머 헬프있쨔요

0 추천
 timer = new CountDownTimer(totalTime, 10){
    @Override
    public void onTick(long millisUntilFinished){
     if( totalTime < 0 ){
      timer.cancel();
      }
     else if(totalTime == 0){
      chargeMinute.setText("완충되었습니다");
     }
     else{
      totalTime--;
      chargeMinute.setText(totalTime+"");
     }
    }
    
    @Override
    public void onFinish() {
     timer.cancel();
     }   
    };
    timer.start();
    }

 카운트다운 타이머 구현 중입니다.

 timer = new CountDownTimer(totalTime, 10)  이 부분에서 보통 괄호안 앞쪽은 진행시간, 뒤쪽은 인터벌인데요..

관례적인 1초씩 20초동안 카운트다운 할려면

timer = new CountDownTimer(20*1000, 1000) 하면 잘 되는데요.,

제가 원하는건 ms 단위라서요.

timer = new CountDownTimer(여기에 값이 얼마나 들어가야하나요, 10)

제가 해본건 20초라는 가정하에,

20*1000*100을 했는데...제대로 안 돌아가서 헬프 요청드립니다.

 

앤드류이드 (6,190 포인트) 님이 2013년 10월 29일 질문
질문이 이해가 안가네요,
ms 단위로 하고 싶다고 하셨는데, 이미 ms 단위인데요..?
20 * 1000 // 20 x 1000 (ms) = 20(s) = 20초
timer = new CountDownTimer(여기에 값이 얼마나 들어가야하나요, 10)
20초요? 20초면 20*1000 이 맞는데요..
지금 질문이 20초동안 1초마다 카운트 하려는 것은 된다고 하셨고,
ms단위가 안된다 하셨는데
20*1000 = 20000 (ms) 가 20초 맞는데요..?
위에 20*1000*100 이건 2000초 에요 (2000000 ms)
20초동안 10ms마다 하고싶으시면
20*1000 은 그대로 두시고 뒤에만 10으로 고치시면 됩니다.
(20*1000, 10) 이렇게 하면 10ms 단위로 20초동안 타이머가 돈다고 하셨는데요...............................
(20*1000, 1000) 이렇게 했을 경우와 (20*1000, 10) 동시에 실행시킨다면 동일한 시간안에 끝나야 하는거자나요? 디스플레이 되는것만 초인지 밀리초인지만 구분하는거 아닌가요? 아 너무 헷갈려요
디스플레이되는 것만 초인지 밀리초인지 구분한다는게 무슨말인가요;;
그냥 제한시간동안 정해준 간격마다 이벤트 발생하는건데...

1개의 답변

0 추천
 
채택된 답변

new CountDownTimer(제한시간, 간격);

case1.  new CountDownTimer(20*1000, 1000);

- 20초간 1초간격으로 이벤트 발생

case2. new CountDownTimer(20*1000, 10);

- 20초간 0.01초 간격으로 이벤트 발생

얼룩돼지 (15,720 포인트) 님이 2013년 10월 29일 답변
앤드류이드님이 2013년 10월 29일 채택됨
간단히 말씀드려서, 20초동안 1초 간격으로 카운트다운 20 -> 19 -> 18........ -> 0

20초동안 0.01초 단위로 카운트 다운..
20000 -> 19999 -> 19999 ...............  ->0
이게 20초동안 발생하고자 하는거에요.
단지, 디스플레이만 ms 단위로 보여지는 것이고 실제 초는 20초동안 발생하길 원합니다.

제가 개념을 잘못 잡고있는건지 굉장히 헷갈리네요 ㅜㅜ
답변확인이 늦었네요..
이 글 확인하실지 모르겟는데...
일단 원하시는게 20000 -> 19999 -> 19998 -> 0
원하시는게 화면상에 위와같은 카운트가 되고
20초동안 이벤트가 발생하시는거라면
new CountDownTimer(20*1000, 1);
이렇게 주시는게 맞긴한데 이렇게되면 0.001초간격으로 화면을 리후레시 해줘야하는데 아무래도 무리가 많이갈것으로 예상되네요.
...