안드로이드 개발 질문/답변
(글 수 45,052)
아래는 구글 오픈 소스는 입니다. 소스 분석하다 의문이 가서 질문드립니다.
AsyncDispatchTask 스레드를 실행시키는데 구지 왜 handler의 post() 함수를 사용했는지 잘 모르겠습니다.
아래와 같이 보통 자바에서 스레드를 실행시키는 코드방식으로 사용해도 문제가 없을텐데..
Thread thread = new Thread(new AsyncDispatchTask ());
thread.start();
HandlerThread 스레드를 상속받아서 핸들러와 Looper 구조를 만들고 메시지 큐에 넣어서 관리하는 것 같고
핸들러 변수가 volatile로 선언된 걸 보면 멀티스레드도 고려한 것 같은데.. 암튼 구지 스레드를 실행시키는데
핸들러를 이용하는 별다른 이유가 있는지 알고 싶습니다.
private static class DispatcherThread extends HandlerThread
{
volatile Handler handlerExecuteOnDispatcherThread;
...
public void dispatchHits()
{
if (this.handlerExecuteOnDispatcherThread == null)
return;
handlerExecuteOnDispatcherThread.post(new AsyncDispatchTask());
}
private class AsyncDispatchTask implements Runnable
{
public void run()
{
...
}
}
}




Main UI 를 담당하는 Thread 는 handler로 자동으로 메세지 큐를 보낼수가 있으나,
임의로 만든 childThread는 그게 불가능하니까...
반복...Looper를 만들어서 보내요.