작업 쓰레드(=자식 쓰레드)에서 부모 쓰레드(=Handler 객체를 생성한 쓰레드)에 Message 및 Runnable(부모 쓰레드에서 처리할 작업) 전달(send/post 메소드)
자식 쓰레드에서 handler를 통해 전달되는 Message와 Runnable은 부모 쓰레드의 메시지큐에 들어감
내부적으로 Runnable도 결국은 Message로 변환(Message.callback=runnable)되어 메시지큐에 들어감
Handler 객체를 생성한 쓰레드(부모 쓰레드)에서는 Looper를 통해 MessageQueue를 만들어 놓아야 함
UI쓰레드(= main쓰레드)는 ActivityThread.main()에 의해 생성되는데, 여기서 Looper를 통해 UI 쓰레드용 메시지 큐가 이미 만들어져 있으므로 우리가 UI 쓰레드용 메시지큐를 만들 필요는 없음
HandlerThread클래스는 Looper를 가진 쓰레드를 쉽게 만들기 위한 용도
Example
// --------------// Event handler.// --------------/** 이벤트 핸들러. */privatestaticclassEventHandlerextendsHandler{/** 비디오화면(View)이 마지막에 도착하였다. */publicstaticfinalintkMessageVideoViewGoEnd=0x00000001;/** 비디오화면(View)이 마지막에서 다시 돌아간다(다시 마지막이 아니다). */publicstaticfinalintkMessageVideoViewReturnEnd=0x00000002;@OverridepublicvoidhandleMessage(Messagemsg){switch(msg.what){casekMessageVideoViewGoEnd:break;casekMessageVideoViewReturnEnd:break;}// super.handleMessage(msg);}}privateEventHandler_event_handler=newEventHandler();/** 비디오화면(View)이 마지막에 도착하였다. */publicvoidsendMessageGoEnd(){Messagemsg=_event_handler.obtainMessage(EventHandler.kMessageVideoViewGoEnd);_event_handler.sendMessage(msg);}/** 비디오화면(View)이 마지막에서 다시 돌아간다(다시 마지막이 아니다). */publicvoidsendMessageReturnEnd(){Messagemsg=_event_handler.obtainMessage(EventHandler.kMessageVideoViewReturnEnd);_event_handler.sendMessage(msg);}