안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
UI Thread관련해서 질문 드릴려구 하는데요
코드 하이라이터가 제대로 작동을 안해서 소스 첨부했습니다.
구동은 메인엑티비티(UI Thread가 되겠죠)에서 자식 thread를 하나 생성합니다.
자식 thread에서 handler를 사용하기 위한 세팅을 합니다 (Looper 등록 등등)
그리고 메인에서 자식으로 메세지를 하나 날립니다. (자식 thread는 3초동안 sleep하는 동작을 합니다 - 부하가 큰 작업이라 가정)
그럼 자식 thread에서 작업을 끝내면 다시 메인으로 작업이 완료됐다는 메세지를
날립니다. 그럼 메인에서 관련 위젯의 ui를 변경해 줍니다.
여기까지 메세지를 하나만 날릴때는 동작을 잘하는데
for문등을 이용해서 메세지를 6개정도 한번에 날리면 문제가 발생합니다.
자식 thread에서 큐에서 하나씩 메세지를 꺼네서 처리하는데 까진 정상 동작하고
메인으로 메세지도 정상적으로 보내는거 같습니다.
근데 정작 메인에서 handleMessage부분이 루틴을 타지 않습니다.
자식 thread에서 작업이 완료되면 일괄적으로 ui변경이 이루어 집니다.
소스의 onClick부분에 주석처리되있는 부분이 터치했을경우 메세지 하나 보내거나 한꺼번에 보내는 두가지 방식인데요
뭐가 문제인지 모르겠네요.. 자식 thread를 생성해서 looper를 등록하면 개별적인 루틴과 큐를 갖고 동작할 거라고 생각했는데
그부분이 잘못 된건지..아무리 생각해도 모르겠네요
모쪼록 고수분들의 답변 기다리겠습니다~^^