본문 바로가기

Kotlin_study/CodeLab

[Codelab] Coroutine에 대해 이해하기

목차
1. 공부 이유

2. Coroutine이란?

3. 후기, 이후 계획

4. 참고문헌

 

1. 공부 이유

ViewModel 학습 이후 ViewModel 팩토리 패턴, Repository 패턴 등 공부를 연결해서 해 나가려고 하다보니 Flow와 코루틴에 대한 선행 지식이 있으면 학습에 용이하다고 codelab에 적혀 있어 이를 먼저 공부하고자 한다. 코루틴은 이전부터 학습해야 한다고 느꼈는데, 아무래도 비동기 처리를 하지 않다보니 어플에서 끊기는 현상이 있고 심각할 경우 ANR로 인해 원하는 기능을 구현하지 못하는 경우가 생겼기 때문이다.

우선 학습한 내용을 한 글에 다 담아내기에는 양이 방대하다고 느껴 이를 나누어서 작성해보고자 한다. 

 

참고 Codelab 링크

Use Kotlin Coroutines in your Android App

Introduction to coroutines (android.com)


2. Coroutine 이란?

우선 안드로이드에서 멀티 태스킹을 하기 위해서 Thread를 직접 생성하는 방법도 있지만, 그렇게 되는 경우 스레드를 관리하는데에 시스템 리소스가 소모된다고 한다. 그리고 하나의 메모리 값에 여러개의 스레드가 동시에 접근하는 경합 상태가 일어날 수 있기 때문에 코루틴을 왜 사용하는지 이해할 수 있었다. 또한 콜백 함수를 대체하여 코드의 길이가 짧아지고 가독성이 높아진다. 

 

구성요소

CoroutineScope : 하위 요소와 하위 요소를 취소하거나 반복할 수 있는 Context. 이를 통해 Job을 관리할 수 있다.

Job : 취소 가능한 작업 단위

Dispatcher : 코루틴이 사용할 스레드를 지정하는 것. Main, Default, IO와 같이 용도에 맞춰 스레드를 지정해서 사용할 수 있음 

 

1) 데이터 보유 : 모든 유형의 데이터에 적용 가능

2) 수명 주기 인식 : LiveData에 관찰자를 연결하면 관찰자는 LifecycleOwner와 연결되어 STARTED, RESUMED 활성화된 상태인 관찰자만 업데이트 된다.

3) 관찰 가능한 : LiveData 객체가 보유한 데이터가 변경되면 관찰자에 전달된다.


3. 후기, 이후 계획

어제부터 코루틴에 대해 학습하고 있지만 이해가 되지 않는 부분들이 있어 이를 테스트하고 주변 지식들을 추가 학습하다 보니 시간이 오래 걸린다. 이에 대해 제대로 이해하고 난 후 정리하는게 맞다고 생각하여 Room, ViewModel, Repository, Retrofit에서 어떻게 적용하는지 다시 읽고 실습해보려고 한다.

 

참고 문헌

Use Kotlin Coroutines in your Android App

Introduction to coroutines (android.com)