Handler
Message나 Runnable Object를 전달하는 역할
Message
handleMessage() 메소드 호출
Runnable Object
run() 메소드 호출
Message는 특정 Thread에 있는 MessageQueue에 쌓이고 나옴
Looper는 MessageQueue에 있는 Message를 꺼내 Handler에게 전달
Handler는 handleMessage를 통해 메세지 처리
Handler는 입구(외부 Thread인 MessageQueue)와 출구(UI Thread인 HandleMessage)를 가짐
기본 생성자 Handler handler = new Handler();를 생성하면
자동으로 new Handler()가 호출된 Thread의 MessageQueue와 Looper에 연결됨
하나의 Thread에는 하나의 Looper와 MessageQueue만 가질 수 있음
따라서 handler에서 여러 요구 사항이 오거나 특정 요구 사항의 내용이 많다면 ANR이 발생 가능(UI Thread 일 때)
UI Thread가 아닌 다른 Thread 내부에서 사용될 때에는 MessageQueue와 Looper 생성이 필요함
HandlerThread h = new HandlerThread("lim");
h.start();
Handler hander = new Handler(t.getLooper());
t.quit();
HandlerThread는 MessageQueue와 Looper를 기본적으로 가짐.
(Looper.prepare(); Looper.loop())
'Android > Theory' 카테고리의 다른 글
Application Class (0) | 2013.04.24 |
---|---|
Basic Thread for Application (0) | 2013.04.23 |
Memory issue (0) | 2013.04.17 |
Binder Driver (0) | 2013.04.17 |
Android 개발 10 계명 (0) | 2013.04.17 |
댓글