본문 바로가기

쓰레드

안드로이드 쓰레드 실체 파악하기 안드로이드 쓰레드 실체 파악 쓰레드 너란 녀석 오늘은 자바내의 쓰레드 기본적인 사용법과 디테일하게 실체를 파악해 보겠습니다. 사실 안드로이드개발에서 쓰레드의 실체는 리눅스의 그것 과 일치합니다. 아래의 이미지를 확인해보면 이유를 알수 있습니다. 계층 구조를 보시죠. 앱개발단 자체는 리눅스 커널을 베이스로 하고 있습니다. 때문에 앱 단의 쓰레드 또한 네이티브 pthread 를 기반합니다. 안드로이드는 pthread와 다르게 표현하려고 특별한 속성을 부여합니다. 1.UI 쓰레드 UI쓰레드는 응용프로그램의 시작과 끝을 같이 합니다. 화면에 구성요소를 실행/변경하고 이를 메인쓰레드 라고도 합니다. UI요소에 타 쓰레드가 접근하게 되면 바로 Exception을 보실수 있습니다. 오직 메인쓰레드만이 UI 조작이 가.. 더보기
UI쓰레드에서 긴작업을 하면 안되는 이유 안드로이드 지식 공유 UI 쓰레드와 백그라운드 쓰레드 Main 쓰레드와 백그라운드 쓰레드를 어떻게 사용해야 할까? 저는 안드로이드 개발 초기에 UI 개발에 대한 개념이 부족하다 보니 많은 어려움이 있었습니다. 게다가 쓰레드에 대한 개념이 명확하지 않아서 정확하게 일을 처리할 수 없었죠. 지금은 쓰레드가 너무 재미있습니다. 기억을 거슬러 한번 정리하면서 메인쓰레드, 백그라운드 쓰레드를 언제 만들어서 사용하는지 구분해서 알아보겠습니다. 몇가지 규칙을 지킨면 그야말로 유저친화적인 앱을 만들수 있습니다. 1. 긴 시간이 걸리는 작업은 반드시 백그라운드 작업자를 통해 사용하도록 한다 2. UI(화면) 관련 제어가 필요하다면 반드시 UI 쓰레드(Main Thread)에게 맡겨라 이것이 전부 입니다. 간단하죠? 이 .. 더보기
HandlerThread 의 활용 안드로이드 지식 공유 HandlerThread 의 활용 우리가 전편에서 구경했던? Handler 는 매우 쉽고 간편하게 비동기적 처리를 담당해주는 고마운 녀석이 었습니다. 그러나 백그라운드 작업에서 핸들러를 설정하려면 여러가지로 셋팅해줘야 할 부분들이 생기죠. 쓰레드의 동작 까지 신경써야 합니다. 그리하여 우리는 HandlerThread 라는 녀석과 만나게 됩니다. https://developer.android.com/reference/android/os/HandlerThread 이 녀석은 쉽게말해 우리가 쓰레드를 생성하고 그안에 핸들러 셋팅까지 했던 것을 자동으로 해주는 고마운 친구 입니다. 즉 Thread Looper MessageQueue 의 복잡함을 자동으로 관리해준다는 말이죠. 동작방법은 너무도.. 더보기