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

타이머 종료 소스 질문

0 추천

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	private Button startButton;
	private Button pauseButton;

	private TextView timerValue;

	private long startTime = 0L;

	private Handler customHandler = new Handler();

	long timeInMilliseconds = 0L;
	long timeSwapBuff = 0L;
	long updatedTime = 0L;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		timerValue = (TextView) findViewById(R.id.timerValue);

		startButton = (Button) findViewById(R.id.startButton);

		startButton.setOnClickListener(new View.OnClickListener() {

			public void onClick(View view) {
				startTime = SystemClock.uptimeMillis();
				customHandler.postDelayed(updateTimerThread, 0);

			}
		});

		pauseButton = (Button) findViewById(R.id.pauseButton);

		pauseButton.setOnClickListener(new View.OnClickListener() {

			public void onClick(View view) {

				timeSwapBuff += timeInMilliseconds;
				customHandler.removeCallbacks(updateTimerThread);

			}
		});

	}

	private Runnable updateTimerThread = new Runnable() {

		public void run() {

			timeInMilliseconds = SystemClock.uptimeMillis() - startTime;

			updatedTime = timeSwapBuff + timeInMilliseconds;

			int secs = (int) (10 - (updatedTime / 1000));
			int mins = secs / 60;
			secs = secs % 60;

			timerValue.setText("" + mins + ":" + String.format("%02d", secs));
			customHandler.postDelayed(this, 0);
		}

	};

}
예제를 보고 공부중인데
00:00이 되도 종료가 안되고 0:-1 처럼 계속해서 마이너스 해서 내려갑니다
00:00이 되면 종료하게 하려면 어떤 소스를 추가해야되나요 ㅠ
Tost (120 포인트) 님이 2014년 7월 23일 질문

2개의 답변

0 추천
updateTimerThread의 run()에서 마지막줄에 customhandler부분을 실행하지 않으면 멈추게 될겁니다.

그럼 그전에 분과 초가 0인지 판단하면 되겠죠?
q1212 (26,020 포인트) 님이 2014년 7월 23일 답변
0 추천

안드로이드 CountDownTimer 객체 사용 하시면 손쉽게 타이머 기능 구현 가능합니다.

아래는 10분 타이머 짜리 1초간격 타이머

           new CountDownTimer(600 * 1000, 1000) {
			@Override
			public void onTick(long millisUntilFinished) {
                                타이머 인터벌당 이벤트
			}
			
			@Override
			public void onFinish() {
				타이머 종료시 이벤트
			}			
		};

 

익명사용자 님이 2014년 7월 23일 답변
...