: 쓰레드는 아니지만, 쓰레드처럼 특정 업무를 별개의 수행 흐름으로 실행시키기 위한 용도
쓰레드보다 경량이다
메모리 누수가 작다
취소 등 다양한 기법을 지원한다 (쓰레드는 사실상 불가능)
많은 JetPack 라이브러리에 적용되어 있다
구글에서 적극 권장
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
: 코루틴이 실행되는 영역
1. CoroutineScope
job을 설정하지 않으면 기본 job이 설정된다.
2. LifecycleScope
해당 코드가 작성된 소유자 ( 액티비티에 작성되어 있으면 액티비티 생명주기에 따름) 의 라이프사이클과 연계되어 있다.
3. ViewModelScpoe
ViewModel에 연결된 CoroutineScope이다.
ViewModel이 지워지면 스코프가 없어진다.
launch
: job을 반환
async
: Deffered를 반환
await() 함수 사용가능
withContext
: 병렬처리가 가능한 async와 달리 withContext는 순차 처리만 가능하다. 또 try~ catch로 예외처리가 가능하다
코루틴 실행 도중 실행 환경을 바꾸고 싶을 때 사용한다.
https://hodie.tistory.com/77
https://todaycode.tistory.com/183
https://asuhdevstory.tistory.com/entry/%EC%BD%94%EB%A3%A8%ED%8B%B4-Scope%EB%8A%94-%EC%96%B4%EB%96%A4-%EC%A2%85%EB%A5%98%EB%93%A4%EC%9D%B4-%EC%9E%88%EC%9D%84%EA%B9%8C-CoroutineScope-LifecycleScope-ViewModelScope