반응형

coroutine 5

[Android] Dive into Compose Side Effect API. Compose Effect Coroutine Logic.

개요 상태 및 사용 사례 LaunchedEffect : Composable 범위에서 suspend function 실행 LaunchedEffect 예제 rememberCoroutineScope : Composition 인식 범위를 확보하여 Composable 외부에서 코루틴 실행 rememberCoroutineScope 예제 DisposableEffect : 정리가 필요한 Effect DisposableEffect 예제 개요 SideEffect API는 Composable 함수의 범위 밖에서 발생하는 앱 상태에 관한 변경사항이다. Composable의 수명 주기 및 속성으로 인해 SideEffect API는 없는 것이 좋지만, 필요한 경우가 발생한다. 예를 들어 스낵바를 표시하거나 특정 상태 조건에 따라..

[Kotlin] Dive into Concept of Kotlin Coroutine Context. Dispatchers, Job and Deferred.

소개 Dispatchers Android Dispatchers Dispatchers.Default Dispatchers.IO Dispatchers.IO & Dispatchers.Default Job Deferred Job States 소개 CoroutineContext는 코루틴 실행을 어떻게 할 것인지에 대한 요소들을 결정한다. Coroutine은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 타입의 값으로 표시되는 일부 Context에서 실행된다. CoroutineContext는 다양한 요소의 집합이다. 주요 요소는 Job, Dispathcer, ExceptionHandler 등이 있다. 이러한 요소들은 각각의 키 값을 갖고 있으며, CoroutineContext로 등록된다...

[Kotlin] Dive into Concept of Kotlin Coroutine and CoroutineContext. (suspend keyword)

소개 CoroutineScope CoroutineContext CoroutineBuilder suspend keyword 예제 Structured concurrency Coroutine continuation 소개 코루틴은 일시 중단이 가능한 계산의 인스턴스이다. 안드로이드의 UI 스레드 실행을 중단시키지 않고 다른 스레드에서 계산을 실행할 수 있다는 점에서 개념적으로 스레드와 유사하다. 그러나 코루틴은 특정 스레드에 바인딩되지 않고, 한 스레드에서 실행을 일시 중단하고 다른 스레드에서 다시 시작할 수 있다. 말이 어려울 수 있다. 중요한 점은 코루틴은 일시 중단이 가능하다는 것이다. Coroutine을 구성하는 요소로 CoroutineScope, CoroutineContext, CoroutineBuil..

[Android/Kotlin] Convert URL to Bitmap

안녕하세요 골드입니다. 오늘은 url로 선언되어 있는 이미지를 Bitmap 객체로 변환하는 방법에 대해서 작성하도록 하겠습니다. 서버와 통신하면서 단순히 Glide(혹은 다른 라이브러리)에 URL을 바로 into()하여 사용하지 않고, Json 파일을 Bitmap으로 변환하는 일이 생길 때가 분명 있을 것입니다. 저는 함수를 이렇게 만들었습니다. try cahtch문과 관계없이 HttpURLConnection은 안드로이드의 메인 스레드에서 접근할 수 없습니다. 따라서 이 함수를 그냥 사용할 수 없습니다. 그냥 사용할 경우 이와 같은 에러가 발생합니다. 저 같은 경우 코루틴을 사용하였습니다. 코루틴의 Dispatcher를 IO로 변경하여 HttpURLConnection 객체를 사용하도록 하였습니다. Asy..

[Kotlin] 비동기 프로그래밍 기술

안녕하세요 골드입니다. 비동기 프로그래밍은 더 이상 선택이 아닌 필수임에 따라 프로세스 블록에 대한 해법은 꽤 오래 연구되어 왔습니다. 코틀린 공식 문서를 참고하여 그 다양한 기술 해법에 대해서 간략하게 이야기하고자 합니다. https://kotlinlang.org/docs/async-programming.html#threading Asynchronous programming techniques | Kotlin kotlinlang.org 스레드 콜백 미래시 리액티브 프로그래밍 코루틴 스레드 가장 잘 알려진 방법입니다. 시간이 오래 걸리는 작업은 ui에 영향을 미칠 수 있습니다. 애플리케이션에 경우 최악은 ANR이 발생하여 앱이 멈출 수 있다는 것입니다. 이러한 경우 분리된 스레드에서 작업을 할 수 있습니..