Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 에러
- RecyclerView
- build
- studio
- ADB
- Android
- Gradle
- coroutine
- 의존성주입
- 코틀린
- 안스
- Retrofit
- 깃헙
- MVVM
- viewpager
- 안드로이드 스튜디오
- 스튜디오
- 웹뷰
- error
- Kotlin
- dart
- Github
- GIT
- image
- 코루틴
- 유튜브
- 안드로이드
- 레트로핏
- WebView
- 안드로이드스튜디오
Archives
- Today
- Total
코딩하는 일용직 노동자
Coroutine callbackFlow란? 본문
callbackFlow는 콜백 함수를 사용하여 데이터 스트림을 생성하는 코루틴 플로우 함수입니다. 비동기 작업을 수행하고 데이터를 스트림 방식으로 제공하는 경우에 유용합니다.
작동 방식:
callbackFlow 함수는 콜백 함수를 인수로 받습니다.
콜백 함수는 데이터가 사용 가능할 때마다 offer 함수를 호출하여 데이터를 제공합니다.
callbackFlow 함수는 데이터 스트림을 생성하고 반환합니다.
구독자는 collect 함수를 사용하여 데이터 스트림을 수집합니다.
장점:
비동기 작업을 쉽게 코루틴 플로우와 함께 사용할 수 있습니다.
데이터 스트림을 백프레셔 방식으로 제공하여 메모리 누수를 방지할 수 있습니다.
콜백 함수를 통해 데이터 스트림을 유연하게 제어할 수 있습니다.
단점:
callbackFlow 함수는 콜백 함수를 사용하기 때문에 코드가 더 복잡해질 수 있습니다.
콜백 함수는 코루틴 스코프 내에서 실행되어야 합니다.
fun getDataStream(): Flow<Int> = callbackFlow { callback ->
// 비동기 작업을 수행하는 코드
// ...
// 데이터가 사용 가능할 때마다 offer 함수를 호출하여 데이터를 제공합니다.
callback.offer(1)
callback.offer(2)
callback.offer(3)
// 작업이 완료되면 close 함수를 호출하여 데이터 스트림을 종료합니다.
callback.close()
}
fun main() {
val flow = getDataStream()
flow.collect { data ->
// 데이터를 처리하는 코드
// ...
}
}
'안드로이드' 카테고리의 다른 글
launchWhenStarted, launchWhenCreated, launchWhenResumed 가 무엇인가? (0) | 2024.03.25 |
---|---|
코루틴플로우 StateFlow vs SharedFlow 차이점 (0) | 2024.03.22 |
MutableStateFlow, MutableSharedFlow, Channel의 차이점 (0) | 2024.03.17 |
CoroutineFlow Operator의 종류 (0) | 2024.03.17 |
ViewModelProvider.Factory를 이용해 파라메터가 있는 ViewModel 생성하기. (0) | 2024.03.15 |