[Coroutine] LifecycleScope
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를 사용했어요
간단하게 비동기 처리가 됬습니다.