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
'Programming Language > Kotlin' 카테고리의 다른 글
[Kotlin] Dispatchers in Kotlin Coroutines (0) | 2024.03.02 |
---|---|
[Kotlin] Flow zip 연산자로 long- running tasks in parallel 처리하기 (0) | 2024.03.02 |
[Kotlin] Kotlin에서 Flow Api (0) | 2024.03.01 |
[Kotlin] Kotlin Coroutines에서 Launch 와 Async (0) | 2024.03.01 |
[Kotlin] coroutineScope와 supervisorScope (0) | 2024.01.20 |