- Flow 란?
Flow는 코루틴 상에서 Reactive Programming 을 지원하기 위한 구성 요소입니다.
아울러 데이터 스트림 입니다.
- Reactive Programming 이란?
프로그램이 주도하는 것이 아닌 주변 환경과 끊임없이 상호 작용하여 주변 환경이 변하면 이벤트를 받아 동작하도록 만드는 프로그래밍 기법입니다.
기존 명령형 프로그래밍은 데이터를 요청한 후 받은 결과값은 일회성이었습니다. 데이터가 필요할 때마다 매번 다시 요청해야한다는 점에서 매우 비효율적이었습니다.
Reactive Programming에는 데이터를 발행하는 발행자가 있고 발행자는 데이터의 소비자에게 지속적으로 데이터를 전달하게 됩니다. 이것을 데이터 스트림이라고 합니다.
- 데이터 스트림 구성요소
1. 생산자
flow {} 블록 내부에서 emit() 을 통해서 데이터를 생성합니다.
2. 중간 연산자
생산자가 데이터를 생성했으면 중간 연산자는 생산자가 발행한 데이터를 수정합니다.
예를 들어서 발행은 A라는 객체로 했지만 우리가 필요한 객체는 B라면 중간 연산자를 통해 A객체를 B객체로 변환 하는 작업을 합니다.
대표적으로 map() , filter() , onEach() 등의 중간 연산자가 있습니다.
3. 소비자
소비자는 생산자로부터 전달된 데이터를 collect를 이용해 데이터를 소비합니다.
간단하게 Flow에 대해 정리해봤으며 , 다음글부터는 실제로 사용되는 함수들에 대해서 알아보겠습니다.
'안드로이드 > Flow' 카테고리의 다른 글
[android/안드로이드] flow flatMapConcat 사용하기 (0) | 2022.08.06 |
---|---|
[android/안드로이드] LiveData VS StateFlow (0) | 2022.07.27 |