본문 바로가기

코틀린

코틀린 Flows의 소개

반응형

Flow는 코틀린 언어에 있는 것으로 특정시간에 걸쳐 여러 값을 순차적으로 방출하는 특징이 있는 것입니다. 예를 들면 Flow를 사용하여 API에 최신 업데이트를 가져와 Flow 연산자로 수정할 수 있습니다. Flow에 대해 설명하기 전에 Hot/Cold  stream에 대해서 짚어보겠습니다.

HotStream은 수신자가 없어도 데이터를 전송합니다. 반해 ColdStream은 수신자가 있을 때만 전송합니다. 예를 들어 Channels은 HotStream 입니다. HotStream은 매번 data flow 가 있기 때문에 수신자를 제어해야합니다. 데이터 손실 혹은 메모리 누수를 일으킬 수 있기 때문입니다. 반면 ColdStream은 요청할 때만 수집을 시작합니다. kotlin의 flow는 코틀린의 Coroutine 에 의해 강력한 cold steam 입니다. 코루틴을 취소하면 flow도 삭제되므로 수동으로 메모리를 확보할 필요가 없습니다.

Flow Operation

값 수신을 시작하려면 터미널 연산자 (collect, reduce, launchIn) 등을 사용해야합니다.

collect()의 경우는 모든 새 값에 의해 호출되고 코루틴 내에서 실행되어야 하는 일시 중단 함수입니다.

transform() 으로 flow를 원하는 형식으로 가져올 때 사용합니다.

take(n) 는 처음에서 n개만 가져올 때 사용합니다.

flow.zip(flow), flow.combine(flow) 는 두 개의 스트림을 합치는 연산자 입니다.

onStart() 플로우가 수집되기 전에 입력되는 위치

onCompletion() 플로우가 완료되거나 취소될 때 입력되는 위치

oneEach() 새 값이 도착될 때마다 입력됨

untilChanged()를 사용하여 동일한 값의 모든 후속 발생을 필터링

takeWhile() 주어진 조건이 충족될 때까지 값을 다음 연산자에 전달한다.

stateIn() Flow를 stateFlow로 변환이 가능하다. stateFlow는 항상 값이 있어야 하므로 initailValue, 공유 시작 시기를 제어하는 범위, 업스트림 흐름이 종료되기 전 필요한 시간 값을 취하는 세가지 매개 변수가 있습니다.

 

https://medium.com/yemeksepeti-teknoloji/introduction-to-kotlin-flows-827f5a71ad7e

 

Introduction To Kotlin Flows

Android development, which I have been working on since the beginning of my college life, has always seemed like a huge world that is…

medium.com

 

 

반응형