corotuine
-
How do Kotlin coroutines work internallyKotlin 2023. 3. 6. 13:00
안녕하세요 안드로이드 11기 강다현입니다. Coroutine under the hood 이번엔 코루틴의 내부 동작에 대해 살펴보도록 합시다. 이 내부 동작에서의 핵심 키워드는 Continuation (Continuation-Passing-Style)입니다. 우리가 코루틴을 사용할 때, 기본적으로 suspend function은 함수를 중간에 멈출수가 있습니다. 그러나 suspend function을 사용하다 보면 이런 의문이 생깁니다. 다시 멈추고 다시 돌아갈 땐 (resume) 내부적으로 어떻게 동작하는 걸까요? 어떤 포인트에서 다시 시작해야할지 어떻게 알까요? (일종의 마법같은? 현상!) 이 문제를 해결하기 위한 개념이 바로 Continuation-Passing-Style. CPS입니다. 먼저 간단한..
-
StateFlow 값의 원시성을 보장하는 방법Android 2023. 3. 5. 13:44
안녕하세요. 메쉬업 안드로이드 11기 이두한입니다. 이번엔 Android Weekly에도 소개된 Atomic on updates with MutableStateFlow포스팅에 나와있는 StateFlow가 갖고 있는 값에 다수의 코루틴이 동시 접근하였을 경우 발생하는 문제와 해결방법에 대해 알아보도록 하겠습니다. StateFlow는 MVVM 패턴에서 UI 상태를 유지하고 내보내는데 일반적으로 사용됩니다. 예를 들어 뷰 모델 안에서 ViewState라는 데이터 클래스가 뷰의 상태를 나타내고 이이 관리하기 위해 StateFlow를 사용한다면 아래와 같이 나타낼 수 있을 겁니다. Update ui state using StateFlow class MainViewModel: ViewModel(){ private ..
-
코루틴(Coroutine)의 일시 중단 함수 사용하기Kotlin 2023. 3. 4. 02:13
Composing Suspending Functions 이번 포스팅에서는 코루틴의 일시 중단 함수를 조합하여 활용하는 방법을 알아본다. ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Sequential by default 아래 코드는 어떤 유용한 기능(?) 두 가지를 순차적으로 실행 및 조합하여 결과를 내도록 구현되어 있다. fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() printl..