Programming Language/Kotlin

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

Tenacity_Dev 2024. 3. 2. 00:12
728x90

저번 포스팅에 대한 보충 내용

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 thread
        FileUtils.move(source, destination)
        emit("Done")
}
.flowOn(Dispatchers.IO)

CoroutineScope(Dispatchers.Main).launch {
    moveFileflow.collect {
        // when it is done
    }
}

 

이미지 다운로드

여기서는 백그라운드 스레드에서 이미지를 다운로드하고 기본 스레드의 수집기로 진행 상황을 계속 보내는 이미지 다운로드용 Flow Builder를 사용하여 흐름을 생성한다.

val downloadImageflow = flow {
        // start downloading
        // send progress
        emit(10)
        // downloading...
        // ......
        // send progress
        emit(75)
        // downloading...
        // ......
        // send progress
        emit(100)
}
.flowOn(Dispatchers.IO)

CoroutineScope(Dispatchers.Main).launch {
    downloadImageflow.collect {
        // we will get the progress here
    }
}

 

728x90