안드로이드 프로그래밍 Next Step(노재춘) : 2장 메인스레드와 Handler

유진·2025년 8월 8일
0

Handler
Looper
Message
MessageQueue

Handler는 메인 Looper와 연결되어 메인스레드에서 Message를 처리하는 중심 역할을 한다.

UI 스레드

  • UI 업데이트는 단일스레드
  • 메인스레드 = UI스레드
  • UI 뿐만 아니라 서비스, 리시버, Application도 UI 스레드에서

루퍼

  • Looper는 TLS(Thread local storage)에 저장되고 꺼내진다
  • Looper는 각각의 MessageQueue를 가진

메시지와 메시지큐

  • 메시지큐는 메시지가 실행 타임스탬프순으로 삽입되고 링크로 연결되어 실행시간이 빠른것부터 순차적으로 꺼내어진다

핸들러

  • 핸들러는 메시지를 메시지큐에 넣는 기능 / 메시지큐에서 꺼내 처리하는 기능
  • 핸들러와 루퍼는 연결되어있음
  • 핸들러 생성자 종류가 있다.
    1. 기본 생성자 -> 기본 스레드 -> 메인 루퍼
    1. 백그라운드 스레드 -> 기본 생성자 못씀. 그 스레드에서 쓸 루퍼를 따로 준비해아함
  • 핸들러는 UI 갱신을 위해서 씀
    1. 백그라운드 스레드에서의 UI 업데이트
    2. 메인스레드에서 다음 작업 예약
    3. 반복 UI 갱신
    4. 시간 제한
  • 실행 시점을 보장하지는 않음. 앞선 작업이 오래걸리면 밀림. 단일스레드라서

ANR

  • ANR (Application Not Responding) 어느 동작이 메인스레드를 너무 오랜시간동안 점유하고 있다
  • ANR 앱과 무관하게 기기의 사양에 따라 발생할 수도 있..음.
  • 명시하지 않으면 1분
profile
안드로이드... 좋아하세요?

0개의 댓글