본문 바로가기

안드로이드

Android - Handler 정리

Handler는 Thread의 MessageQueue와 관련된 Message 및 Runnable 객체를 보내고 처리 할 수 있습니다. 각 Handler 인스턴스는 단일 Thread 및 해당 Thread의 MessageQueue와 연관됩니다. 새로운 Handler를 만들면 Looper에 바인딩됩니다. Message와 Runnable을 해당 Looper의 MessageQueue에 전달하고 해당 Looper의 Thread에서 실행합니다.

 

Looper는 Thread에 전달된 Message의 실행을 관리하는 Queue이며, 입력이 없을 때 대기하고, 메세지를 전달받으면 해당 메세지를 연결된 Thread에서 처리하게끔 관리한다.

 

Handler는 

  1. Message와 Runnable의 실행 시점을 관리한다.
  2. 다른 Thread에서 처리할 작업을 대기열에 추가한다.

Handler에는 아래의 메서드들이 존재하며, 해당 메서드를 통해 Message 및 Runnable 객체를 Handler에 전달할 수 있다. 메서드명을 보면 해당 메서드가 어떤 역할을 하는지 명확하게 알 수 있다. post()의 경우 Runnable객체를 인자로 받아 Handler에 전달한다. sendMessage()는 Message 객체를 인자로 받아 해당 Handler에 전달해주는 역할을 한다. Handler엔 Message를 받아 처리하는 Callback 인터페이스가 있으며, Handler를 구현할 때 해당 Callback을 구현해서 메세지 처리를 하면 된다.

  • post()
  • postDelayed()
  • postAtTime()
  • sendMessage()
  • sendEmptyMessage()
  • sendMessageDelayed()
  • sendMessageAtTime()

참고링크:

https://developer.android.com/reference/android/os/Handler

 

Handler  |  Android 개발자  |  Android Developers

Handler public class Handler extends Object java.lang.Object    ↳ android.os.Handler A Handler allows you to send and process Message and Runnable objects associated with a thread's MessageQueue. Each Handler instance is associated with a single thread and

developer.android.com

https://developer.android.com/reference/android/os/Looper

 

Looper  |  Android 개발자  |  Android Developers

Looper public final class Looper extends Object java.lang.Object    ↳ android.os.Looper Class used to run a message loop for a thread. Threads by default do not have a message loop associated with them; to create one, call prepare() in the thread that is t

developer.android.com