목록2024/09 (5)
안드로이드 개발자 노트
9.1. 일시 중단 함수와 코루틴9.1.1. 일시 중단 함수란 무엇인가? 일시 중단 함수는 suspend fun 키워드로 선언되는 함수로 주로 코루틴의 비동기 작업과 관련된 코드들을 구조화 하고 재사용할 수 있는 코드의 집합으로 만드는데 사용된다.fun main() = runBlocking { delayAndPrintHelloWorld() delayAndPrintHelloWorld()}suspend fun delayAndPrintHelloWorld() { delay(1000L) println("Hello World")}9.1.2. 일시 중단 함수는 코루틴이 아니다 일시 중단 함수는 코루틴 내부에서 실행되는 코드의 집합일 뿐, 코루틴이 아니다.fun main() = runBlocking { val..
8.1. 코루틴의 예외 전파 8.1.1. 코루틴에서 예외가 전파되는 방식 코루틴에서 예외가 발생하면, 그 코루틴은 취소되고 예외가 부모 코루틴으로 전달된다.부모 코루틴에서도 예외가 처리되지 않으면 루트 코루틴까지 예외가 전파될 수 있다. 예외 전파를 제대로 막지 못해 루트 코루틴이 취소되면 구조화된 코루틴이 모두 취소될 수 있다. 8.1.2. 예제로 알아보는 예외 전파fun main() = runBlocking { launch(CoroutineName("Coroutine1")) { launch(CoroutineName("Coroutine3")) { throw Exception("예외 발생") } delay(100L) println("[${Thread.currentThrea..
구조화된 코루틴의 대표적인 특징은 다음과 같다. 부모 코루틴의 실행 환경이 자식 코루틴에게 상속된다.작업을 제어하는 데 사용된다.부모 코루틴이 취소되면 자식 코루틴도 취소된다.부모 코루틴은 자식 코루틴이 완료될 때까지 대기한다.CoroutineScope를 사용해 코루틴이 실행되는 범위를 제한할 수 있다.fun main() = runBlocking { launch { // 부모 코루틴 launch { // 자식 코루틴 println("자식 코루틴 실행") } }} 7.1. 실행 환경 상속 7.1.1. 부모 코루틴의 실행 환경 상속 부모 코루틴이 자식 코루틴을 생성하면 부모 코루틴이 CoroutineContext가 자식 코루틴에게 전달된다.fun main() = runBlocking..
CoroutineContext는 코루틴을 실행하는실행 환경을 설정하고 관리하는 인터페이스로 CoroutineContext 객체는 CoroutineDispatcher. CoroutineName, Job 등의 객체를 조합해 코루틴의 실행 환경을 설정하는 등 핵심적인 역할을 한다. 6.1. CoroutineContext의 구성요소 CoroutineContext 객체는 CoroutineName, CoroutineDispatcher, Job, CoroutineExceptionHandler의 네 가지 구성 요소를 가진다. CoroutineName: 코루틴의 이름을 설정한다.CoroutineDispatcher: 코루틴을 스레드에 할당해 실행한다.Job: 코루틴의 추상체로 코루틴을 조작하는 데 사용된다.Corouti..
코루틴 라이브러리는 비동기 작업으로부터 결과를 수신해야 하는 경우를 위해 async 코루틴 빌더를 통해 결괏값을 수신받을 수 있도록 한다. 5.1. async 사용해 결괏값 수신하기 5.1.1. async 사용해 Deferred 만들기public fun CoroutineScope.async( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, block: suspend CoroutineScope.() -> T): Deferredasync 함수는 CoroutineDispatcher를 설정할 수 있는 context 인자와 지연 시작할 수 있는 start 인자 그리고 ..