계발자 블로그
[Coroutine] LifecycleScope 본문
https://developer.android.com/kotlin/coroutines
https://developer.android.com/topic/libraries/architecture/coroutines
코루틴이란
비동기 프로그래밍에 권좡되는 동시 실행 설계 패턴입니다.
Room을 사용했을 때 비동기 처리를 해줘야 되는데 저번에 메인 스레드에서 실행을 시켜서
이번에는 코루틴을 사용하여 간단하게 비동기 처리를 해줬습니다.
코루틴 사용 순서입니다.
1. 어떤 쓰레드에서 실행할 것 인지 Dispatchers 를 정하고 (Dispatchers.Main, Dispatchers.IO, Dispatchers.Default)
2. 코루틴이 실행될 Scope를 정하고 (CoroutineScope, ViewModelScope, LifecycleScope, liveData...)
3. launch 또는 async로 코루틴을 실행 시키면 됩니다!
gradle에 추가
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
CoroutineScope
코루틴이 실행되는 범위로, 코루틴을 실행하고 싶은 Lifecycle에 따라 원하는 Scope를 생성하여 코루틴이 실행될 작업 범위를 지정할 수 있습니다.
CorutineScope
GlobalScope
ViewModelScope
lifecycleScope를 사용했습니다
lifecycle 객체 대상(Activity, Fragment, Service...)의 생명주기가 끝날 때 코루틴 작업이 자동으로 취소됩니다.
Dispatchers
코루틴을 어떤 쓰레드에서 실행할 것인지에 대한 동작을 지정합니다.
Dispatchers.Main : 안드로이드의 메인 쓰레드로, UI 작업을 위해 사용해야 합니다.
예를 들어, UI를 구성하거나 LiveData를 업데이트 할 때 사용됩니다.
Dispatchers.IO : 네트워크, 디스크 I/O 실행에 최적화되어 있습니다.
예를 들어, Retrofit으로 네트워크 통신을 하거나, File이나 Room 데이터베이스에서 데이터를 읽고/쓸 때 사용됩니다.
Dispatchers.Default : CPU 사용량이 많은 무거운 작업 처리에 최적화 되어 있습니다.
예를 들어, 데이터를 가공하거나 복잡한 연산, JSON 파싱을 할 때 주로 사용됩니다.
저는 Room에 사용한거기 때문에 Dispatchers.IO를 사용했어요
간단하게 비동기 처리가 됬습니다.
'Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 Companion Object (0) | 2023.03.01 |
---|---|
[Kotlin] Kotlin Property (코틀린 프로퍼티) (0) | 2023.03.01 |
Coroutine (0) | 2022.09.27 |
[Kotlin] Scope Function (0) | 2022.03.30 |
[Kotlin] Collection (0) | 2021.12.10 |