Flow usage pattern
2025. 6. 19. 08:57ㆍFrontend/Android
- 목차
반응형
var items: Flow<List<Item>> = ...
items.map { list ->
list.filter { it.type == REGULAR }.sortedWith(
compareBy {
if (type.sortOrder == SortOrder.NAME) it.name else it.value
},
)
}
Flow가 List
Flow의 map 연산자는 항상 Flow를 반환
그래서 결과는 다시
Flow<List<Item>>임
#
Flow의 collect는 코루틴 내에서 실행되어야 함
그래서 다음과 같이 구현하기도 함
// 1. null이 아닌 경우 collect
flow?.let {
collectStations(it) { list ->
...
}
}
{ ... } 부분이 tailing lambda로 callback 매개변수에 전달됨
// 2. collect는 코루틴 내에서 수행
collectStations(flow: Flow..., callback: (List<MediaItem>) -> Unit) {
aJob?.cancel()
aJob = viewModelScope.launch(Dispatchers.IO) {
flow.collectLatest(callback)
}
}
flow에서 collect 시 마다 수신 받은 데이터에 대해 callback을 호출
이때 collectLatest에 callback을 넘겼으나, 다음과 같이 trailing lambda로 넘길수도 있음
collectLatest { it ->
...
}
반응형
'Frontend > Android' 카테고리의 다른 글
Android Service ex. (w/ AIDL) (0) | 2025.06.11 |
---|---|
Android Studio 심볼(함수, 변수 등) 정의 부분으로 가기가 안되는 경우 (0) | 2025.05.07 |
오래된 장치(폰)에서 안드로이드 앱을 실행하는 방법 (0) | 2025.03.18 |
LiveData 사용 이유 (0) | 2025.02.27 |
Android에서 Unresolved reference: activity_main 에러 (0) | 2023.02.16 |