
Handler
Looper
Message
MessageQueue
Handler는 메인 Looper와 연결되어 메인스레드에서 Message를 처리하는 중심 역할을 한다.
UI 스레드
- UI 업데이트는 단일스레드
- 메인스레드 = UI스레드
- UI 뿐만 아니라 서비스, 리시버, Application도 UI 스레드에서
루퍼
- Looper는 TLS(Thread local storage)에 저장되고 꺼내진다
- Looper는 각각의 MessageQueue를 가진
다
메시지와 메시지큐
- 메시지큐는 메시지가 실행 타임스탬프순으로 삽입되고 링크로 연결되어 실행시간이 빠른것부터 순차적으로 꺼내어진다
핸들러
- 핸들러는 메시지를 메시지큐에 넣는 기능 / 메시지큐에서 꺼내 처리하는 기능
- 핸들러와 루퍼는 연결되어있음
- 핸들러 생성자 종류가 있다.
1. 기본 생성자 -> 기본 스레드 -> 메인 루퍼
- 백그라운드 스레드 -> 기본 생성자 못씀. 그 스레드에서 쓸 루퍼를 따로 준비해아함
- 핸들러는 UI 갱신을 위해서 씀
- 백그라운드 스레드에서의 UI 업데이트
- 메인스레드에서 다음 작업 예약
- 반복 UI 갱신
- 시간 제한
- 실행 시점을 보장하지는 않음. 앞선 작업이 오래걸리면 밀림. 단일스레드라서
ANR
- ANR (Application Not Responding) 어느 동작이 메인스레드를 너무 오랜시간동안 점유하고 있다
- ANR 앱과 무관하게 기기의 사양에 따라 발생할 수도 있..음.
- 명시하지 않으면 1분