안드로이드 이야기
안드로이드 - 타이머 만들기 3
mapagilove
2012. 5. 26. 12:51
728x90
반응형
2011/04/20 16:16
http://blog.naver.com/pureb612b/10107402974
android.os.Handler
android.os.Handler
클래스를 사용하여 타이머 이벤트를 간단하게 만들어보겠습니다.
다음은 1초에 한번씩 정수값을 증가시켜 텍스트 뷰로 출력하는 예제입니다.
01.
import
android.app.Activity;
02.
import
android.os.Bundle;
03.
import
android.os.Handler;
04.
import
android.os.Message;
05.
import
android.widget.TextView;
06.
07.
public
class
Timer
extends
Activity {
08.
/** Called when the activity is first created. */
09.
@Override
10.
public
void
onCreate(Bundle savedInstanceState) {
11.
super
.onCreate(savedInstanceState);
12.
setContentView(R.layout.main);
13.
14.
textView = (TextView) findViewById(R.id.TextView);
15.
16.
//sendEmptyMessage 메소드로 빈 메세지를 보냄으로서 호출된다.
17.
handler.sendEmptyMessage(
0
);
18.
}
19.
20.
//매 1초 마다 증가할 정수값
21.
private
int
value =
0
;
22.
private
TextView textView =
null
;
23.
24.
//타이머를 처리하기 위해 핸들러 객체 생성
25.
private
Handler handler =
new
Handler() {
26.
public
void
handleMessage(Message msg) {
27.
value++;
28.
textView.setText(
"Value = "
+ value);
29.
//1초간의 지연 시간을 두어 1초후에 자기자신이 호출 되도록 한다.
30.
handler.sendEmptyMessageDelayed(
0
,
1000
);
31.
}
32.
};
33.
}
위의 소스를 보면 Handler
객체의 handleMessage
메소드를 재정의 하였다.sendEmptyMessage
메소드를 한번한 호출해주면 handleMessage
메소드 내에서 자기 자신을 계속 호출하기때문에 1씩 증가한 값이 TextView
에 계속 찍히게 되는 것이다.
android.os.CountDownTimer
주기적인 작업을 처리하는 좀 더 공식적이고 간편한 방법은 CountDownTimer
클래스를 활용 하는 것이다.
생성자는 다음과 같다.
1.
CountDownTimer(
long
millislnFuture,
long
countDownInterval)
첫번째 인수 long millislnFuture
는 카운트 다운을 할 총 시간이며, 두번째 인수 long countDownInterval
는 한번 카운트 할 주기이다. 단위는 둘다 1/1000 초이다.
타이머는 총 주기동안 실행되면서 onTick
메소드를 호출하다가 총 시간이 경과 되면 onFinish
메서드가 호출된다.CountDownTimer
객체를 생성한후 start
메서드를 호출하면 즉시 동작한다.
01.
import
android.app.Activity;
02.
import
android.os.Bundle;
03.
import
android.os.CountDownTimer;
04.
import
android.widget.TextView;
05.
06.
public
class
Timer
extends
Activity {
07.
/** Called when the activity is first created. */
08.
@Override
09.
public
void
onCreate(Bundle savedInstanceState) {
10.
super
.onCreate(savedInstanceState);
11.
setContentView(R.layout.main);
12.
13.
textView = (TextView) findViewById(R.id.TextView);
14.
15.
//타이머 설정
16.
timer =
new
CountDownTimer(
10
*
1000
,
1000
) {
17.
@Override
18.
public
void
onTick(
long
millisUntilFinished) {
19.
value++;
20.
textView.setText(
"Value = "
+ value);
21.
22.
if
( value ==
5
) timer.cancel();
23.
}
24.
25.
@Override
26.
public
void
onFinish() {
27.
}
28.
};
29.
30.
//타이머 시작
31.
timer.start();
32.
}
33.
34.
//매 1초 마다 증가할 정수값
35.
private
int
value =
0
;
36.
private
TextView textView;
37.
private
CountDownTimer timer;
38.
}
728x90
반응형