목록전체 글 (70)
Groo

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) Flow의 collect를 사용하면 하나의 Coroutine에서 발행과 소비가 함께 일어난다. 데이터를 발행하고 해당 데이터를 소비했으면 그 후에 다음 데이터가 발행된다, 이처럼 발행과 소비는 동기적으로 진행된다. val bankFlow = flow { for (num in 1..50) { emit(num) delay(1000) // 은행 직원 휴식 시간 } } fun visitBank() { lifecycleScope.launch { bankFlow.onEach { println("${it}번 고객님 차례입니다.") }.collect { delay(5000) // 통..

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) 리액티브 프로그래밍에서는 종종 여러 데이터 흐름을 하나로 합쳐 단일 Flow를 만들어 내기도 한다. 이런 Flow를 UI에서 사용하기 위해서는 StateFlow로 변환을 해주어야 한다. 우리는 이를 stateIn 함수를 통해 변환할 수 있다. stateIn 함수는 아래 세 가지 파라미터를 전달 받는다. fun Flow.stateIn( scope: CoroutineScope, started: SharingStarted, initialValue: T ): StateFlow scope: StateFlow가 Flow로부터 데이터를 구독 받을 CoroutineScope를 명시한..

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) Flow는 데이터의 흐름이다. 즉, Flow는 데이터의 흐름을 발생시킬 수만 있을 뿐 Flow 자체를 저장할 수는 없다. 안드로이드에서 Flow만을 이용하여 UI 상태를 업데이트하기 위해 아래 두 가지 방법이 존재했다. 매번 서버 또는 내부 DB로부터 데이터 가져오기 Flow를 통해 collect한 데이터를 ViewModel에 저장하여 사용하기 두 번째 방법이 첫 번째 방법보다는 효율적이긴 하지만 데이터를 저장하려면 별도의 데이터 홀더 변수를 만들어야 한다. 그러나 데이터 홀더 변수는 리액티브 하지 못하기 때문에 UI에서 해당 데이터 변수를 구독하는 패칭 로직을 추가로..

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) Coroutine의 Flow는 데이터 스트림이며, 코루틴 상에서 리액티브 프로그래밍을 지원하기 위한 구성 요소이다. 리액티브 프로그래밍이란 데이터가 변경될 때 이벤트를 발생시켜서 데이터를 계속해서 전달하도록 하는 프로그래밍 방식이다. [명령형 프로그래밍 데이터 스트림] 기존 명령형 프로그래밍에서 데이터의 소비자는 데이터의 발행자에게 데이터를 요청한 후 결과 값을 일회성으로 수신한다. 하지만, 이러한 방식은 데이터가 필요할 때마다 결과 값을 매번 요청해야 한다는 점에서 매우 비효율적이다. [리액티브 프로그래밍 데이터 스트림] 그러나, 리액티브 프로그래밍에서 데이터의 소비..