안드로이드 개발 질문/답변
(글 수 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 클래스를 활용해서 하는 이유는 무엇인가?
아직 이쪽 계통으로 초보라 쉽지는 않네요.. 고수님들의 조언 부탁드립니다.
수고하세요~