루퍼란?

  • 쓰레드에서 핸들러는 메시지큐에서 메시지를 읽어서 메인 쓰레드로 메시지를 전달하는 역할을 한다. 이 때 핸들러는 루퍼를 통해 메시지큐에서 메시지를 읽는다. 루퍼는 말 그대로 무한 루프 방식을 이용해 메시지 큐에 들어오는 메시지를 지속적으로 보면서 하나씩 처리한다. 메인 쓰레드는 UI 객체들을 처리하기 위해 메시지큐와 루퍼를 내부적으로 처리한다.
  • 그러나 별도의 쓰레드를 새로 만들었을 때는 해당 쓰레드에 루퍼가 존재하지 않기 때문에 다른 쓰레드에서 메시지를 전달받아 순차적으로 처리하고 싶다면 루퍼를 만들어야 한다.

루퍼는 아래와 같이 prepare와 loop 메소드를 통해 동작한다.

class ProcessThread extends Thread {
    ...
    public void run() {
        Looper.prepare();
        Looper.loop();
    }
    ...
}


+ Recent posts