본문 바로가기

안드로이드/Asynchronous

[안드로이드] 스레드

프로세스란?

프로세스는 실행 중인 프로그램, 안드로이드로 치면 App이 프로세스이다.

App을 실행하면 안드로이드 OS의 메모리에 App이 올라가 실행된다.

 

스레드란?

프로세스 내에서 수행되는 작업들은 모두 스레드를 통해 이루어진다.

예를 들어, 계산기 어플이 프로세스라면 계산하는 작업은 스레드를 통해 실행된다.

 

안드로이드에서의 스레드

 

App을 실행하면 시스템은 메인 스레드를 만든다.

메인 스레드는 위젯, 뷰의 패키지에 있는 구성요소와 상호작용하는 스레드로, UI 스레드라고도 불린다.

 

화면에 XML을 출력해주거나, 버튼 클릭에 대한 이벤트 동작 등 모두 메인 스레드가 담당한다.

 

따라서, 시간이 긴 작업(네트워크, 데이터 쿼리 등)을 UI 스레드에서 진행하면 작업 시간동안 UI가 차단되며, UI 차단이 몇 초 이상 지속될 시 '애플리케이션 응답 없음'(ANR) 대화 상자가 표시된다.

ANR 대화상자

 

 

때문에 이러한 작업들은 메인이 아닌 Worker 스레드 또는 백그라운드에서 실행해야한다.

이를 비동기 처리 방식이라고 하며, RxJava 또는 코루틴을 이용하여 접근할 수 있다.

'안드로이드 > Asynchronous' 카테고리의 다른 글

[안드로이드] Coroutine Flow  (1) 2024.03.30
[안드로이드] 코루틴  (0) 2024.03.11
[안드로이드] 동기와 비동기  (0) 2024.03.10