Handler and Looper (핸들러와 루퍼)

강유리·2023년 4월 8일
0

Android 개념

목록 보기
2/3

안드로이드는 '메인 스레드와 백그라운드 스레드의 통신', '스레드 및 스레드 간 통신'을 위해 핸들러와 루퍼를 제공한다.

핸들러와 루퍼는 스레드와 스레드 간의 통신을 위해 사용 !!

Handler and Looper 작동 원리

  • Main Thread는 내부적으로 Looper를 가진다.
  • Looper는 Message Queue를 포함한다.
  • Message Queue : 다른 스레드 혹은 스레드 자기 자신으로부터 전달받은 메시지를 보관하는 Queue
  • Looper : Message Queue에서 메시지, Runnable 객체를 차례로 꺼내 Handler가 처리하도록 전달
  • Handler : Looper로부터 받은 메시지, Runnable 객체를 처리하거나 메시지를 받아서 Message Queue에 넣는 '스레드 간 통신 장치'

Looper

  1. Message Queue에서 메시지, Runnable 객체를 차례로 꺼내 Handler가 처리하도록 전달
  2. Mainactivity가 실행됨과 동시에 반복문이 무한루프를 돌고 있는 서브 스레드로 생각하면 좋다.
  3. Looper는 대기하고 있다가 자신의 큐에 쌓인 메시지를 Handler에 전달한다.
  4. 여러 개의 Background에서 큐에 메시지를 입력하면, 입력된 순서대로 하나씩 꺼내 Handler에 전달한다.

Handler

  1. Looper로부터 받은 메시지, Runnable 객체를 처리하거나 메시지를 받아서 Message Queue에 넣는 '스레드 간 통신 장치'
  2. Looper가 있는 Main Thread에서 주로 사용되며, 새로 생성된 스레드들과 Main Thread 사이의 통신을 담당
  3. Looper를 통해 받은 메시지를 처리하는 일종의 명령어 처리기
  4. 앱 실행시 무한루프를 도는 Looper와 다르게, Handler는 개발자가 직접 생성해 사용해야 한다.

Message

  1. Message는 Looper의 큐에 값을 전달하기 위해 사용되는 Class
  2. 메시지 객체에 미리 정의해둔 코드를 입력하고, 큐에 담아두면, Looper가 꺼내서 Handler에 전달한다.
profile
리유

0개의 댓글