안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
쓰레드를 사용할때 대부분 핸들러를 같이 사용하시던데요.
찾아보니까
안드로이드에서 쓰레드 사용할 때, 메인 쓰레드의 멤버들을 참조할 수 없다.
이 문제를 해결하기 위해서는.. 핸들러를 사용해야 한다.
라고 하던데 혹시 다른 이유가 더 있나요?
찾아보니까
2012.12.13 10:35:31
쓰레드의 로직이 완료되면 이를 UI 에 반영을 해줘야하는 경우가 많습니다.
하지만 UI 에 대한 접근은 UI 쓰레드에서밖에 접근이 안됩니다.
(액티비티나 프래그먼트 등의 클래스내에서 처리해야한다는 말이지요)
그러기 위해서 외부 작업한 쓰레드에서 UI 쓰레드로 반영해야할 데이터를 던져줘야하는데
이걸 하려면 Looper 에 접근해서 UI 쓰레드에 반영 값을 던지기에 대한 다양한 로직을 수행해야 하죠
이를 가장 쉽게 처리해주는 것이 Handler 이기 때문에 Handler 를 사용하는 것입니다.
2012.12.13 10:49:50
윗분들이 잘 설명 해주셧는데..... 저는 일종의 쓰레드에 대한 리스너라고 생각하고 사용합니다.
조금 햇갈리는 부분이 있다면.... 간단히 리스너라고 생각하심이 편합니다.
쓰레드 안에서 뭔가 작업을 하고 그 작업이 쓰레드 안에서 그냥 끝나는 경우도 있지만,
대다수의 경우 쓰레드에서 뭔가 작업을 하는 도중의 변화하는 데이터나
작업 완료 후의 데이터를 다른 쓰레드로 전달해야 하는 경우가 대부분입니다.
예를 들어 백그라운드 쓰레드에서 데이터를 처리하면서 메인쓰레드(UI쓰레드)에서 그 데이터를 뷰에 표시한다거나 하는 일 말이죠.
그렇게 서로 다른 쓰레드간에 메시징이 필요할 때 이를 담당하는 역할을 핸들러가 수행합니다.