안드로이드에서 UI처리를 위해 사용되는 기본 스레드는 '메인 스레드'라고 부른다
이 메인 스레드에서 이미 UI에 접근하고있으므로
새로 생성한 다른 스레드에서는 핸들러 (Handler)객체를 이용해
메시지를 전달함으로써 메인 스레드에서 처리하도록 만들 수 있다
애플리케이션을 위해 프로세스가 만들어지면 메인 스레드는 최상위에서 관리되는 애플리케이션 객체인
액티비티, 브로드캐스트 수신자 등과 새로 만들어지는 윈도우를 관리하기 위한 메시지 큐(Message Queue)를
실행하게 된다.
이 메시지 큐를 이용해 순차적으로 코드를 수행할 수 있으며
이렇게 메시지 큐를 이용해 메인 스레드에서 처리할 메시지를 전달하는 역할을 담당하는 것이
핸들러 클래스다
결국 핸들러는 실행하기를 원하는 특정기능이 있을때 현재 수행되고있는 스레드가 아닌
메인 스레드에서 실행시키고자 할 때 사용된다
1. obtainMessage()
스레드#1에서 핸들러가 관리하는 메시지 큐에서 처리할 수 있는 메시지 객체 하나를 참조한다
2. sendMessage()
스레드#1에서 참조한 메시지 객체에 필요한 정보를 넣은후 메시지 큐에 넣는다
3. handleMessage()
메시지 큐에 들어간 메시지는 순서대로 핸들러가 처리하게 된다
handleMessage()에 들어있는 코드가 수행되는 위치는 스레드#1이 아닌 메인 스레드다
반응형
'Dev_Study > Android' 카테고리의 다른 글
16. AsyncTask (0) | 2018.02.07 |
---|---|
안드로이드 앱 아이콘 사이즈 (0) | 2018.02.06 |
14. 이벤트 (0) | 2018.01.29 |
13. 프래그먼트 (Fragment) (0) | 2018.01.29 |
12. 다이얼로그(Dialog) (0) | 2018.01.26 |