android flow(3)
-
[Android A..Z] Flow onXXX연산자 예외처리 정리
onEach : 각 아이템 마다 무언가 할 때 fetchBoardDetailItemUseCase(id) .onStart { _boardDetailUiState.update { it.copy( isLoading = true, items = listOf() ) } }.onEach { Log.d(TAG, "Item ${it.toString()}") } Flow에서 아이템을 방출할 때 마다 실행하도록 할 수 있다. 업스트림에서 흘러나오는 값을 그대로 내보낸다. onStart : 시작할 때 fetchBoardDetailItemUseCase(id) .onStart { _boardDetailUiState.update { it.copy( isLoading = true, items = listOf() ) } } onSt..
2024.04.21 -
[A..Z] Kotlin Flow vs StateFlow hot? cold? 스트림 쉽게 알아보기
서론 LiveData가 클린 아키텍처적으로 Android 의존성을 띄기 때문에 domain layer에서 사용하기 부적합하는 등의 이유로 Flow를 대체적으로 많이 사용하고 있다. 여러모로 flow를 사용하면서 많은 레퍼런스도 참고 했지만 안드로이드에서 적용할 때 많이 아쉬운 부분이 있어서 flow 적용기를 남겨두려고한다. 이 글에서는 먼저 hot stream 과 cold stream의 차이를 알아보겠습니다. 본론 Cold Stream과 Hot Stream의 차이점은 3가지로 말할 수 있습니다. 1. 데이터가 생성되는 위치 2. 생산자가 발행한 데이터를 동시에 여러 소비자들이 수신할 수 있는지 여부 3. 스트림이 데이터를 생산하는 시점 Cold Stream(Flow) 1. 데이터가 생성되는 위치 Flow..
2023.11.29 -
[Kotlin Flow] 예제를 활용해 쉽게 Flow에 대한 개념 익히기 -1-
개념 Coroutine에서 Flow는 suspend func(정지 함수)와는 다르게 여러 값을 순차적으로 내보낼 수 있는 유형입니다. 이렇게 말하면 어떤말인지 잘 모를 수 있습니다.(저도 그랬거든요..ㅎㅎ) 간단한 예를 보겠습니다. Coroutine suspend Function val intList = ArrayList() val job1 = lifecycleScope.launch { (1..99).forEach { intList.add(it) delay(10L) } } lifecycleScope.launch { job1.join() intList.forEach { Log.d("TAG", it.toString()) } } // result 빌드 후 약 1초 후에 모든 값이 한 번에 찍힙니다. 위 코드를..
2022.07.29