스레드 하나에 루퍼, 핸들러, 메시지 큐를 하나씩 가지고 있다.
메시지 큐
- 루퍼 내부에 존재, 외부 스레드로부터 핸들러를 통해 받은 메시지나 테스크를 저장하는 역할
- Runnable 객체면 핸들러에게 전달하지 않고 run()을 수행
- Message 객체 내부의 명시되어 있는 Handler의 handleMessage() 수행
루퍼
- 메시지큐에서 메시지를 순차적으로 꺼내서 핸들러에게 전달하는 역할
핸들러
- 받은 메시지를 처리하고, 스레드 간의 메시지 전달하는 작업을 수행
역할
- 루퍼에게서 받은 메시지나 테스크를 일정한 시간에 수행한다.
- 외부 스레드로부터 받은 메시지를 메시지 큐에 집어넣는 작업을 수행한다.
![](https://velog.velcdn.com/images/rkdals3912/post/cd275c7e-1561-4699-a111-6ec319f9d5c0/image.png)
1. 다른 스레드에서 특정 스레드의 Handler의 sendMessage를 활용하여 메인 스레드 looper의 메시지큐에 메시지를 전달.
2. 해당 스레드의 looper는 메시지 큐에서 loop()를 통해 메시지를 하나씩 handler에게 전달
3. 핸들러에서 handleMessage()를 통해 메시지 처리