Handler

    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

    댓글