계발자 블로그

[Coroutine] LifecycleScope 본문

Kotlin

[Coroutine] LifecycleScope

더구더구 2021. 10. 28. 16:17

 

https://developer.android.com/kotlin/coroutines

 

Android의 Kotlin 코루틴  |  Android 개발자  |  Android Developers

Android의 Kotlin 코루틴 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확

developer.android.com

https://developer.android.com/topic/libraries/architecture/coroutines

 

수명 주기 인식 구성요소와 함께 Kotlin 코루틴 사용  |  Android 개발자  |  Android Developers

수명 주기 인식 구성요소와 함께 Kotlin 코루틴 사용 Kotlin 코루틴은 비동기 코드를 작성할 수 있게 하는 API를 제공합니다. Kotlin 코루틴을 사용하면 코루틴이 실행되어야 하는 시기를 관리하는 데

developer.android.com

 

코루틴이란

비동기 프로그래밍에 권좡되는 동시 실행 설계 패턴입니다.

 

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를 사용했어요

 

 

간단하게 비동기 처리가 됬습니다.

 

 

 

 

 

 

 

출처 : https://0391kjy.tistory.com/49

'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