안드로이드는 크게 1개의 메인 스레드와 여러개 존재 할 수 있는 백그라운드 스레드로 나눌 수 있다.
Activity를 비롯한 모든 컴포넌트는 단일 프로세스 및 메인 스레드에서 실행된다.
화면의 UI를 그리는 스레드
안드로이드 UI 툴킷의 구성요소와 상호작용하고 UI 이벤트를 사용자에게 응답하는 스레드
(UI이벤트 및 작업에 수 초 내에 응답하지 않으면 안드로이드 시스템은 팝업창을 표시하므로,
오래 걸리는 코드는 새로운 스레드를 생성하여 처리해야 함)
좋은 앱은, 처리 자체의 지연이 있더라도, 사용자와 지속적으로 상호작용 할 수 있어야 한다.
네트워크 작업, 파일 업로드 다운로드, 이미지 처리, 데이터 로딩 등은 짧은 시간이 걸린다고
하더라도 처리 시간을 계산할 수 없다. 그래서 안드로이드 시스템은 메모리 이외의 다른 곳에서 데이터를
가져오는 작업을 백그라운드 스레드에서 처리하는 것을 권장한다.
class WorkerThread: Thread () {
override fun run() {
}
}
override fun run() {
var i = 0
while (i < 10) {
i += 1
Log.i("WorkerThread","$i")
}
}
var thread = WorkerThread()
thread.start()
class WorkerRunnable : Runnable {
override fun run() {
var i = 0
while (i < 10) {
i += 1
Log.i("WorkerRunnable","$i")
}
}
}
var thread = Thread(WorkerRunnable()) <-- 다른 부분
thread.start()
Thread {
var i = 0
while (i < 10) {
i += 1
Log.i("LambdaThread","$i")
}
}.start()
thread(start=true) {
var i = 0
while (i < 10) {
i += 1
Log.i("KotlinThread","$i")
}
}
Main Thread 이외에는 UI를 업데이트 할 수 없다. -> 윈도우 프로그램이나 IOS 앱과 같은 다른 어플리케이션에도 적용되는 사항
출처 : 이것이 안드로이드다 (개정판) with Kotlin by 고돈호