쓰레드와 핸들러가 갑자기 햇갈리네요..
지금껏 핸들러는 쓰레드간 통신하기 위한 장치로만 알고 있었는데..
핸들러 그 자체로도 새로운 쓰레드로 동작하지 않나요..
보통 제가 사용하기로는 새로운 쓰레드를 만들었을때.. UI 변경이 필요한 경우 핸들러를 호출하여 UI 변경시켜주는 식으로
사용하였는데요..
예전에 만들어둔 스탑워치 예제를 다시 보니.. 단지 핸들러를 호출하는 것만으로 새로운 쓰레드 처럼 이용하고 있어서요..
핸들러와 쓰레드의 차이가 궁금합니다..
안드로이드 특성상 UI 변경은 메인 스레드에서만 허용되어있습니다. 만약 메인 스레드에서 시간이 오래걸리는 작업을 하게될 경우가 가장 문제의 소지가 일어날 가능성이 많죠.. 만약 작업량이 많으면 화면이 멈춘듯하게 될겁니다. 이러한 현상을 방지하기 위해 오랜 시간이 걸리는 작업은 스레드를 따로 만들어 작업하게 만들고 일을 마친뒤에서나 UI를 변경해줘야겠죠.. 핸들러의 역할은 메세지큐처럼 순차적으로 메인스레드로 작업을 넘겨주는 작업을 해줍니다. 따라서 핸들러를 통해서 메인 스레드 메세지 큐에 작업지시를 내려놓고 실행 대기상태로 만들어주는 역할을 하죠..
주 일은 쓰레드가 하고, 핸들러는 쓰레드가 작업할 내용을 순차적으로 대기시켜주는 역할을 한다고 보면되겠네요..