Android(Kotlin)

코루틴(Coroutine)

----___<<<<< 2021. 8. 23. 21:49

 rx와 함께 많이 듣는 코루틴입니다.

 

 한번 코루틴에 대해서 알아보겠습니다.

 

 간단하게 말하면 비동기 프로그래밍인데 얘가 어떻게 동작하는지 알 수 있는 매우매우 간단한 예제를 보겠습니다.

 

 간단하게 테스트를 찍어보겠습니다.

 

 

 

 위에서 볼 수 있듯이, 순차적으로 진행되고, 메인쓰레드가 실행됩니다.

 

 그러면 코루틴을 이용하면 어떻게 되는지 보겠습니다.

 

 

 위와 같이 worker thread가 동작하고 비동기적으로 이루어지는 것을 볼 수 있습니다.

 

 흔히 보는 rxJava(rxKotlin)과 다른 점이 무엇일까 살펴보면은

 

 - Rxjava 

 

 Observable pattern으로 subscribe

 들어온 데이터를 stram으로 내보낸다. 

 중간에 데이터가 변환되는걸 stream을 통해서 확인 가능

 

 - Coroutines

 

 누구나 아는 함수를 호출하고 return이 오기 전까지 기다리고, return 온 데이터를 가지고 다음 처리

 

 - Thread

 

 모든걸 직접 구현(피곤함) 

 

 자, 여기까지 알아봤고 그 다음 계속 쓰레드에 대해서 알아보겠습니다.

 

 CoroutineScope(Dispatchers.IO).launch {}

 

 로 워커쓰레드에서 실행한 것을 

 

private suspend test(){

 withContext(Dispatchers.Main){}

}

 

 다시 메인쓰레드로 쓰레드를 체인지 할 수 있습니다.

 

 그리고 async await를 통해서 동기 비동기를 선택해줄 수 있습니다.

 

 또한, structured concurrency, unstructured concurrency 등을 선택해줄 수 있습니다.

 

 

 또한, Viewmodelscope과 lifecyclescope를 이용해서 코루틴의 생명주기를 관리해줄 수 있습니다.

 

 또한 코루틴을 이용하다보면 flow라는 친구가 나오는데 이 친구는 

 

 비동기로 동작하면서 여러개의 값을 반화하는 function을 만들 때 사용하는 builder입니다.

 

 

 - 참고

 

 

https://thdev.tech/android/2019/11/30/RxJava-Corotuines-01/

 

RxJava와 Coroutines을 간단하게 알아보자. |

I’m an Android Developer.

thdev.tech

 

https://developer.android.com/kotlin/coroutines/coroutines-adv?hl=ko 

 

Kotlin 코루틴으로 앱 성능 향상  |  Android 개발자  |  Android Developers

Kotlin 코루틴을 사용하면 네트워크 호출이나 디스크 작업과 같은 장기 실행 작업을 관리하면서 앱의 응답성을 유지하는 깔끔하고 간소화된 비동기 코드를 작성할 수 있습니다. 이 주제에서는 And

developer.android.com

 

https://kotlinlang.org/docs/coroutines-basics.html#scope-builder

 

Coroutines basics | Kotlin

 

kotlinlang.org

 

https://developer.android.com/topic/libraries/architecture/coroutines?hl=ko 

 

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

Kotlin 코루틴은 비동기 코드를 작성할 수 있게 하는 API를 제공합니다. Kotlin 코루틴을 사용하면 코루틴이 실행되어야 하는 시기를 관리하는 데 도움이 되는 CoroutineScope를 정의할 수 있습니다. 각

developer.android.com

https://jaejong.tistory.com/67

 

[Kotlin] 코루틴 #7 - Flow

코루틴 #7 - Flow (플로우) Coroutine 이전 글 코루틴 #1 - 기본 코루틴 #2 - CoroutineContext와 CoroutineScope란? 코루틴 #3 - suspend Function (중단함수) 코루틴 #4 - CoroutineBuilder와 ScopeBuilder 코..

jaejong.tistory.com

 

'Android(Kotlin)' 카테고리의 다른 글

Android MVC MVVM MVP  (0) 2021.08.24
Clean Architecture  (0) 2021.08.24
Android Workmanager  (0) 2021.08.22
Android Room Google Ex  (0) 2021.08.22
Unable to load class 'javax.xml.bind.JAXBException'.  (0) 2021.08.22