Programming Language/Kotlin
[Kotlin] Flow Builder를 사용하여 Flow 만들어보기
Tenacity_Dev
2024. 3. 2. 00:12
728x90
저번 포스팅에 대한 보충 내용
https://superohinsung.tistory.com/318
한 위치에서 다른 위치로 파일 이동
여기서는 백그라운드 스레드의 한 위치에서 다른 위치로 파일을 이동하기 위해 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