시스템이 작업을 처리하는 단위로 MainThread는 자동으로 동작한다. 필요시 추가적인 Thread가 생성된다.
MainThread
MainThread의 명칭은 UI Thread 인데, 주 역할로 사용자와 상호작용하며 Input을 받는다.
정지시킬 수 없는 Thread로 장기간 대기상태로 놓거나 정지, 종료시키면 앱이 중지된다.
통신 등을 UI Thread에서 처리하려 할 경우 응답대기 시간 동안 Thread가 정지하게 되고 crash가 발생하면서 앱이 종료되기 쉽다. 때문에 UI Thread에선 연산이 복잡하거나 대기가 필요한 작업을 수행하지 않아야 한다.
View Component를 새로운 Thread에서 조작하려 할 때,
view component를 생성한 Thread만이 해당 component를 조작할 수 있다.
기본 화면은 UIThread가 생성하기 때문에 다른 Thread에서 컴포넌트를 조작하려 하면 예외가 발생한다.
이를 피하기 위해서 runOnUiThread{ } 람다식을 이용한다.
runOnUiThread { findViewById(R.id.<component_id>).setBackgroundColor(getColor(R.color.<color_name>)) }
비동기 작업은 Coroutine이나 RxJava 등으로 처리하도록 한다.
'Android > Android기본' 카테고리의 다른 글
Binder, Binding (0) | 2021.11.24 |
---|---|
Context (0) | 2021.11.24 |
Permission (0) | 2021.11.24 |
AddView (0) | 2021.11.24 |
ListView (0) | 2021.11.24 |
Uploaded by Notion2Tistory v1.1.0