[Android] Timer Event Android 2011. 12. 15. 16:33

타이머는 각 시간에 따라 처리 하는 쓰레드이다.

사용 방법은 두가지가 있는데 먼저 핸들러를 이용한 것은 다음과 같은 코드이다.

public class ImageViewActivity extends Activity{
 
    /** Called when the activity is first created. */
 int time_count = 0;
 TextView text;
 Handler handler;
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.main);
        text = (TextView)findViewById(R.id.text);
       
        handler = new Handler(){
      public void handleMessage(Message msg){
       time_count++;
       text.setText("Value" + time_count);
       handler.sendEmptyMessageDelayed(0,1000);
      }
     };
        handler.sendEmptyMessage(0);
    }
}
이렇게 하면 카운트가 바뀌는 것을 확인 가능하다. 여담으로 하는 말이지만 setText에 int형 값만 넘길 경우에는 에뮬레이터에서 에러를 나타낸다.

다음은 CountDownTimer를 이용하는 방법이다.

public class ImageViewActivity extends Activity{
 
    /** Called when the activity is first created. */
 int time_count = 0;
 TextView text;
 CountDownTimer timer;
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.main);
        text = (TextView)findViewById(R.id.text);
       
        timer = new CountDownTimer(10 * 1000,1000){
         public void onTick(long millisec){
          time_count++;
          text.setText("Value : " + time_count);
          if(time_count==5){
           cancel();
          }
         }
         public void onFinish(){
          text.setText("Finish");
         }
        }.start();
    }
}

여기에서 onTick 메서드가 지정 시간 마다 돌면서 그 내용을 나타내며 전체 시간이 끝나면 onFinish 메서드에서 마무리 작업을 해 준다.

CountDownTimer의 인자에서 보면 총 10초 간격을 1초로 나누어 작업하게 되어 있다.