[GP] Android, 다른 쓰레드에서 UI 처리를 하는 방법

이 글은 저의 Jekyll 블로그의 내용 중 일부를 담아온 것입니다.


오늘 포스트는 어제에 이어서, 쓰레드에 대한 이야기를 계속해보려 합니다. 


아무래도 UI 프로그래밍에 대한 이야기다보니, UI 프로그래밍에 많이 유명하다고 생각되는 Windows 쪽의 이야기를 많이 섞어보자 합니다. 읽으실 때, 이해가 조금 안되시는 부분도 있을테니 참고하시기 바랍니다.



UI 리소스를 Sub Thread에서 직접 사용할 경우.


안드로이드 앱에는 UI가 존재합니다. UI라고 하는 것은 사용자들이 터치하는 버튼, 텍스트 박스 등의 컴포넌트를 말하는데요. 주로 간단한 애플리케이션에서는 이 UI를 메인 쓰레드에서 처리합니다. 


하지만 앱이 커지게 되면, 쓰레드가 생기게 될 수 있고, 해당 쓰레드에서 UI를 처리할 수도 있습니다. 하지만 과연 이렇게 하는 프로그래밍이 올바른 프로그래밍 방법일까요?


만일 메인 쓰레드에서 계속 UI를 잡고 있는데, 서브 쓰레드에서 이를 접근하려고 한다면? 이런 경우에는 두 쓰레드가 한 자원을 계속 확보하려고 하므로 동기화 이슈가 발생합니다. 동기화 이슈라는 것은 한 자원을 가지고, 두 사람 혹은 객체가 서로 쓰려고 시도한다는 것이죠. 실제 프로그래밍에서 이런 일로 버그가 생기기 쉽상입니다.




위 이미지는 UI 자원을 두고, UI Thread와 Sub Thread가 사용하려고 하는 경우를 그림으로 나타낸 것입니다. 보다시피 Android에서는 이를 허용하지 않습니다. 


... 계속 읽기


comments powered by Disqus

Tistory Comments 0