
61
3
장
-
안드로이드 스레드
따라서 많은 백그라운드 스레드를 생성한 응용프로그램은, 의도는 그 반대였을지 몰라도
UI
스
레드의 성능을 감소시킬 수 있다. 이 문제를 해결하기 위해 기본적으로 응용프로그램 스레드가
실행하는 컨트롤 그룹에서 백그라운드 스레드를 분리하는 것은 실현 가능한 일이다. 이렇게 분
리하려면, 백그라운드 스레드의 우선순위를 충분히 낮게 설정하여 응용프로그램이 화면에 보이
는 중이더라도 백그라운드 스레드는 항상 백그라운드 그룹에 속하게 해야 한다.
TIP
Process
.
setThreadPriority
(
Process
.
THREAD
_
PRIORITY
_
BACKGROUND
)로 어떤 스레드의 우선순위
를 낮추면, 우선순위가 낮아질 뿐만 아니라 그 스레드는 응용프로그램의 프로세스 수준에서 분리되어 항상 백
그라운드 그룹에 속하게 된다.
3.3
마치며
안드로이드의 모든 스레드 유형(
UI
, 바인더, 백그라운드)은 리눅스 포직스 스레드다. 프로세
스가 시작될 때 응용프로그램은
UI
스레드와 바인더 스레드를 가지지만, 백그라운드 스레드는
직접 생성해야 한다. 모든 안드로이드 구성요소는 기본적으로
UI
스레드에서 실행되지만, 오래
실행되는 태스크는
ANR
의 위험과 느린
UI
렌더링을 방지하기 위해 백그라운드 스레드에서 실
행되어야 한다.
UI
스레드는 가장 중요한