반응형

개요

 

이번에는 안드로이드 타이머 설정하는 방법에 대해서 알아보도록 하겠습니다.

 


설명

 

TimerTask timerTask;   Timer timer = new Timer();  를 이용해서 구해 보도록 하겠습니다.

 


코드

 

 @Override
    protected void onDestroy()
    {
        timer.cancel();
        super.onDestroy();
    }

    private void startTimerTask()
    {
        stopTimerTask();

        timerTask = new TimerTask()
        {
            int count = 300;

            @Override
            public void run()
            {
                count--;
                txt_timer.post(new Runnable() {
                    @Override
                    public void run() {
                        txt_timer.setText(count + " 초");
                    }
                });
            }
        };
        timer.schedule(timerTask,0 ,1000);
    }

    private void stopTimerTask()
    {
        if(timerTask != null)
        {
            txt_timer.setText("300 초");
            timerTask.cancel();
            timerTask = null;
        }
    }

 

TimerTask timerTask;
Timer timer = new Timer();를 전역 변수로 선언하 신 다음에 작성해 주시면 됩니다. 그리고 버튼 온 클릭했을 때 이벤트를 발생시켜주시면

 

btn_start_timer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startTimerTask();
            }
        });
        btn_stop_timer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                stopTimerTask();
                txt_p1_add.setText("0");
                txt_p1_pe.setText("0");
                txt_p1_point.setText("0");
                txt_p2_point.setText("0");
                txt_p2_add.setText("0");
                txt_p2_pe.setText("0");
            }
        });

 

이와 같이 사용해 주시면 됩니다!

 


코드2

 

위와 같이 해주셔도 되고 저는 이제 millisecond로 카운트다운을 주고 싶어서 새롭게 다시 수정해 봤습니다! ㅎㅎ

 

 private void startTimerTask()
    {
        stopTimerTask();

        timerTask = new TimerTask()
        {
            int minute = 5;
            int seconds = minute *60;
            int milliseconds  = seconds*100;

            // 1분에 60000밀리세컨드
            // 1분에 60초
            // 1초에 1000밀리세컨드
            @Override
            public void run()
            {
                milliseconds--;
                final int seconds = (int) (milliseconds / 100) % 60 ;
                final int minutes = (int) ((milliseconds / (100*60)) % 60);
                final int tmillisecond = ((milliseconds)%100);
                txt_timer.post(new Runnable() {
                    @Override
                    public void run() {

                        txt_timer.setText(minutes+":"+seconds+"."+tmillisecond);

                    }
                });
            }
        };
        timer.schedule(timerTask,0 ,10);


    }

 

 

위와 같이 적어주시면 깔끔한 카운트다운타이머가 완성되었습니다!!

 


ps : schedule타이머를 1로 주고 싶으시면 Thread를 돌려 한번더 비동기화 시켜서 작업하시는게

부화를 이르키지 않습니다!

 


 

반응형

+ Recent posts