Android Kotlin CoroutineScope and CoroutineContext
사용 버전: Android Studio Koala 2024.1.1
사용 언어: Kotlin 2.0.10
Coroutine(코루틴)에는 중요한 요소가 세 가지 정도 있습니다.
CoroutineScope(코루틴 스코프), Job(잡), CoroutineContext(코루틴 컨텍스트)입니다.
CoroutineScope는 모든 코루틴에 필요한 요소입니다.
https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/
사용 언어: Kotlin 2.0.10
안드로이드 코틀린 CoroutineScope and CoroutineContext를 알아보겠습니다.
Coroutine(코루틴)에는 중요한 요소가 세 가지 정도 있습니다.
CoroutineScope(코루틴 스코프), Job(잡), CoroutineContext(코루틴 컨텍스트)입니다.
CoroutineScope는 모든 코루틴에 필요한 요소입니다.
https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-scope/
CoroutineScope로 생명 주기를 관리할 수 있습니다. 보통 class의 생성 시, scope를 만들고, class의 소멸 시, scope를 취소합니다. scope가 취소되면 scope에 있는 모든 coroutine은 정지됩니다.
CoroutineScope에는 기본적으로 CoroutineContext 4가지 요소가 들어갑니다.
Job, CoroutineDispatcher(코루틴 디스패처), CoroutineName(코루틴 이름) 그리고 CoroutineExceptionHandler(코루틴 익셉션 핸들러).
이러한 4가지 중 Job과 CoroutineDispatcher가 가장 많이 사용되는 CoroutineContext입니다.
미리 정의된 Scope들이 있습니다. GlobalScope, MainScope, supervisorScope, coroutineScope가 있으며, 안드로이드에서는 생명주기에 맞춰진 lifecycleScope, viewModelScope가 있으며, 테스트를 위한 TestScope도 존재합니다.
Job부터 보겠습니다.
CoroutineScope가 모든 coroutine을 종료시킬 수 있는 것이 바로 이 Job이 있기 때문입니다.
Job은 오류를 모든 자식 coroutine에게 전파해 주어 종료시킵니다. 다른 자식의 오류에도 종료하지 않으려면 SupervisorJob을 사용해야 합니다.
다음으로는 CoroutineDispatcher입니다.
Default, IO, Main, Unconfined가 있습니다.
이것은 Thread(스레드)와 관련된 속성으로 어떤 Thread에서 작동할지를 결정합니다.
재미있는 coroutine 시간이 되시길 바랍니다.
끝.
카테고리: Android
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.