Handler 는 내부적으로 쓰레드를 생성해 메시지큐의 데이터의 입출력을 처리하는 녀석이다.
메시지큐에 메시지를 전송하거나 해당 메시지를 얻어올수 있다.
메시지를 전송할때 지연시간을 두어 전송토록 하는 메쏘드도 포함되어 있어
쓰레드간 메시지 스케줄링시 이래저래 많이 사용된다.
1. 메시지를 수신할 녀석을 설정한다.
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg)
{
}
};
별거읍넹.. 이렇게 설정하면 해당 쓰레드의 메시지 큐에 메시지가
존재하는 경우 handleMessage() 메쏘드가 호출된다.
switch( msg.what ) {
}
과 같이 handleMessage() 메쏘드에 메시지 처리루틴을 넣어주면 된다.
2. 메시지 만들기
쓰레드마다 메시지큐가 생성되므로, 다른쓰레드에서 위의 핸들러에 메시지를
보내기 위해서는 다른쓰레드에서 위의 handler 객체에 접근가능해야 한다.
싱글턴을 사용하던, static 멤버를 사용해 만들던, 위 객체를 접근가능하게 한뒤
메시지를 하나 만든다.
new Message로 만들어도 되나, 매번 객체가 생성되는 단점이 있으므로
핸들러에게 메시지를 하나 달라고 요청하는 방식을 사용한다.
그리고, 해당 메시지를 원하는 값을 설정한다.
Message msg = handler.obtainMessage();
msg.what = 1234;
msg.arg1 = 1111;
msg.arg2 = 2222;
msg.object = Object;
위를 하나로 처리할 수도 있는데,
Message msg = Message.obtain( handler, 1234, 111, 222 );
요렇게 해도 된다.
3. 메시지 전송
handler.sendMessage(msg);
메시지 전송은 여러 메쏘드 들이 존재한다.
'프로그래밍 > Android' 카테고리의 다른 글
Splash window 보이기 (0) | 2009.11.24 |
---|---|
TextButton 만들기 (0) | 2009.11.22 |
버튼 상태에 따른 배경변경 (0) | 2009.11.22 |
에니메이션 처리하기 (0) | 2009.11.19 |
투명한 레이아웃 만들기 (0) | 2009.11.18 |
리시버를 통한 sms데이터 가져오기 (0) | 2009.11.16 |
Broadcast/BroadcastReceiver (0) | 2009.11.11 |
AlarmManger 사용 (0) | 2009.11.10 |
AsyncTask 이해하기 (0) | 2009.11.09 |
테마설정하기 (0) | 2009.11.09 |