Programming Language/Kotlin

Programming Language/Kotlin

[Kotlin] Flow Retry 연산자

Kotlin Flow에서 연산자를 사용하여 작업을 재시도하는 방법에 대해서는 두 연산자가 있다. retryWhen retry retryWhen retryWhen의 정의 fun Flow.retryWhen(predicate: suspend FlowCollector.(cause: Throwable, attempt: Long) -> Boolean): Flow 그리고 다음과 같이 사용한다. .retryWhen { cause, attempt -> } 여기에는 다음과 같은 두 가지 매개변수가 있다. cause : cause는 예외의 원인을 제공하는 변수이다. 만약에 함수가 진행하면서 예외가 발생한다면 어떤한 예외인지를 나타낸다. attempt : 현재 시도를 나타내는 변수이다. 0부터 시작한다. 예를 들어, 작업을 ..

Programming Language/Kotlin

[Kotlin] Dispatchers in Kotlin Coroutines

코루틴에서 사용할 수 있는 Dispatcher 유형을 포함하여 Kotlin 코루틴의 Dispatcher 에 대해 알아보자. Dispatchers 이란 Dispatchers는 코루틴이 작업을 수행해야 하는 스레드를 결정하는 데 도움을 준다. 우리는 특정 작업을 효율적으로 수행하기 위해 코루틴을 사용한다. 코루틴은 특정 스레드에서 작업을 실행한다. 여기가 Dispatcher가 등장하는 곳이다. 코루틴은 작업을 수행해야 하는 스레드를 결정할 때 Dispatcher의 도움을 받는다. Kotlin 코루틴에는 4가지 유형의 Dispatcher가 있다. Dispatchers.Default Dispatchers.IO Dispatchers.Main Dispatchers.Unconfined Dispatchers.Defau..

Programming Language/Kotlin

[Kotlin] Flow zip 연산자로 long- running tasks in parallel 처리하기

Kotlin Flow의 zip 연산자란 Zip 연산자는 지정된 함수를 통해서 두 흐름 컬럭션의 방출을 함께 결합하고 이 함수의 결과를 기반으로 각 조합에 대해 단일 항목을 방출하는 연산자이다. 예제 코드 val flowOne = flowOf(1, 2, 3) val flowTwo = flowOf("A", "B", "C") flowOne.zip(flowTwo) { intValue, stringValue -> "$intValue$stringValue" }.collect { println(it) } 출력 1A 2B 3C Android의 실제 사용 사례 두 작업을 병렬로 실행하고 두 작업이 모두 완료되면 단일 콜백에서 두 작업의 결과를 원하는 경우 장기 실행 작업 1 private fun doLongRunning..

Programming Language/Kotlin

[Kotlin] Flow Builder를 사용하여 Flow 만들어보기

저번 포스팅에 대한 보충 내용 https://superohinsung.tistory.com/318 [Kotlin] Kotlin에서 Flow Api 코틀린 Flow Api에 대해서 공부를 해보자. Kotlin Flow Api란 비동기적인 연산을 처리하기 위한 새로운 프로그래밍 모델을 제공하는 Kotlin의 라이브러리이다. Flow는 비동기적인 작업을 쉽게 처리하고 superohinsung.tistory.com 한 위치에서 다른 위치로 파일 이동 여기서는 백그라운드 스레드의 한 위치에서 다른 위치로 파일을 이동하기 위해 Flow Builder를 사용하여 흐름을 생성하고 메인 스레드에서 완료 상태를 보낸다. val moveFileflow = flow { // move file on background thre..

Programming Language/Kotlin

[Kotlin] Kotlin에서 Flow Api

코틀린 Flow Api에 대해서 공부를 해보자. Kotlin Flow Api란 비동기적인 연산을 처리하기 위한 새로운 프로그래밍 모델을 제공하는 Kotlin의 라이브러리이다. Flow는 비동기적인 작업을 쉽게 처리하고 조절할 수 있도록 설계되었으며, 주로 비동기 스트림(Asynchronous Streams)을 다루는데 사용된다. Flow API의 핵심 개념은 데이터의 비동기적인 흐름(Flow)을 나타내는 것이다. Flow는 값을 생성하고 소비하는 비동기적인 프로시저로, 여러 개의 값을 비동기적으로 생산하고 소비할 수 있다. 이는 코루틴과 함께 사용되어 비동기 코드를 더 간결하게 만들고 복잡성을 줄일 수 있다. Flow의 주요 구성 요소 Flow Builder 작업을 수행하고 아이템을 방출하는데 도움이 된..

Programming Language/Kotlin

[Kotlin] Kotlin Coroutines에서 Launch 와 Async

오늘은 Kotlin Coroutines에서 Launch 와 Async에 대해서 알아보자. launch와 async는 모두 Kotlin에서 코루틴을 시작하는 기능이다. 차이점은 launch는 실행하면 결과 값을 전달하지 않는 반면 , async는 반환 결과 를 얻기 위해 Java에서 future를 사용하는 것처럼 코루틴의 결과를 반환하는 함수가 Deferred있는 의 인스턴스를 반환한다는 것이다. Launch val job = GlobalScope.launch(Dispatchers.Default) { // do something and do not return result } 작업 상태를 가져오거나 취소하는 데 사용할 수 있는 작업 개체를 반환한다. 위의 실행 예에서 우리는 무언가를 해야 하고 결과를 반환..

Programming Language/Kotlin

[Kotlin] coroutineScope와 supervisorScope

coroutineScope와 supervisorScope가 각각 무엇인지 그리고 차이가 무엇인지에 대해서 알아보자. coroutineScope coroutineScope는 Kotlin의 코루틴에서 사용되는 스코프 중 하나로, 여러 개의 코루틴이 모두 완료될 때까지 대기하거나, 그 중 하나라도 예외가 발생하면 모든 코루틴을 즉시 취소하는 기능을 제공한다. coroutineScope 함수는 suspend 함수 내에서만 사용될 수 있으며, coroutineScope 내에서 시작된 코루틴이 완료되거나 예외가 발생할 때까지 현재 코루틴을 일시 중단한다. import kotlinx.coroutines.* suspend fun main() { try { coroutineScope { // 이 부분은 coroutine..

Programming Language/Kotlin

[Kotlin] 코틀린이란 무엇인가 그리고 특징과 주요 개발까지

지금까지 코틀린을 이용하여 앱개발을 하면서도 코틀린이란 무엇인지에 대해서 명확히 알고 넘어가지는 않았던 것 같다. 그래서 이번에는 코틀린에 대해서 공부를 해보자. 코틀린이란 무엇인가 코틀린은 안정성, 간결성, 상호 운용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어이다. 2010년 하반기에 처음 생겨서 2016년 2월 처음으로 공개 릴리스되었으며, 안드로이드 개발, 데스크톱 애플리케이션, 서버 측 솔루션 등 여러 개발 분야에서 유망한 도구로 꾸준히 인기를 얻고 있다. 2019년 11월 코틀린 1.3이 나왔고, 2021년 5월 1.5.0이 나왔다. 지금 현재는 1.8.21.이다(2023년 8월 21일 기준) 원래 언어를 만든 목적, 즉 자바에 대해 더 나은 대안을 제공하려는 목적을 넘어 코틀린이..

Tenacity_Dev
'Programming Language/Kotlin' 카테고리의 글 목록