Android App/Kotlin

스레드(Thread)-루퍼, 핸들러, 메시지

AppJinny 2022. 11. 29. 13:06

*스레드(Thread)-루퍼, 핸들러, 메시지

-메인 스레드와 백그라운드 스레드 및 스레드 간의 통신을 위해 제공

 

*루퍼(Looper)

-메인 액티비티가 실행됨과 동시에 대기하고 있다가 자신의 큐에 쌓인 메시지를 핸들러에 전달

-앱 실행 시 자동으로 하나 생성되어 무한루프를 돔

-여러 개의 백그라운드에서 큐에 메시지 입력 시 입력된 순서대로 하나씩 꺼내 핸들러에 전달

-메인 액티비티가 실행됨과 동시에 for문 하나가 무한루프 돌고있는 서브 스레드로 생각하면 됨

 

*핸들러(Handler)

-새로 생성된 스레드들과 메인 스레드와의 통신 담당

-루퍼가 있는 메인 스레드 에서 주로 사용됨

-핸들러는 루퍼를 통해 전달되는 메시지를 받아 처리하는 일종의 명령어 처리기

-루퍼는 앱 실행 시 자동 생성되지만 핸들러는 개발자가 직접 생성해 사용

 

*메시지(Message)

-루퍼의 큐에 값을 전달하기 위해 사용되는 클래스

-메시지 객체에 미리 정의해둔 코드 입력 후 큐에 담아두면 루퍼가 꺼내어 핸들러에게 전달

 

*핸들러, 루퍼 작동원리(스레드 간의 통신 장치)

-메인 스레드는 내부적으로 루퍼를 가지며 루퍼는 Message Queue를 포함함

--Message Queue : 다른 스레드 혹은 스레드 자기 자신으로부터 전달받은 메시지를 보관하는 큐

-루퍼는 Message Queue에서 메시지, Runnable객체를 차례로 꺼내 핸들러가 처리하도록 전달

-핸들러는 루퍼로부터 받은 메시지, Runnable객체를 처리하거나 메시지를 받아 Message Queue에 넣음

 

 

 


이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.