안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
이번에 자바/안드로이드를 처음 접하다 보니 사소한 거라도 질문이 많이 나오네요. ^^;
질문내용은 간단한 키버튼 예제가 있습니다. 키버튼 클릭시 키 값을 그리는 예제인데 여기서 handler 클래스를 사용해서
구현을 했는데 handler 클래스 활용이 이해가 되지 않습니다.
소스는 아래와 같습니다.
public class KeyEx extends Activity {
....
public class TickHandler extends Handler {
public void handleMessage( Message msg ){
keyView.invalidate();
if( tickHandle != null ) tickHandle.sleep(100);
}
public void sleep( long delayMills ) {
removeMessages( 0 );
sendMessageDelayed( obtainMessage(0),delayMills );
}
}
}
public class KeyView extends View{
....
public boolean onKeyDown( int keycode, KeyEvent event ) {
this.keycode = keycode;
// invalidate();
return super.onKeyDown(keycode, event);
}
}
소스에서 보시면 키다운시 키값만 저장을 합니다. 그래서 handler 클래스에서 handleMessage 에서 keyView.invalidate() 발생하고
sleep()함수에서 sendMessageDelayed 함수를 호출함으로써 키 값을 그리게 됩니다.
제가 여기서 궁금한 것은
1. 키 다운시 자동으로 메세지가 발생하여 handlerMessage 함수가 호출되는것인가?
2. handlerMessage함수에서 keyView.invalidate() 함수를 호출만 하면 화면에 그리지지 않고 sendMessageDelayed 함수를
호출해야만 화면갱신이 되는데 왜 그러는것인가?
3. sendMessageDelayed 함수는 어디로 보내는것인가?
4. 키다운에서 invalidate(); 함수를 호출해서 그려도 되는데 handler 클래스를 활용해서 하는 이유는 무엇인가?
아직 이쪽 계통으로 초보라 쉽지는 않네요.. 고수님들의 조언 부탁드립니다.
수고하세요~



