Kotlin Flow는 코루틴 코어 라이브러리의 일부로, 단일 값만 반환하는 suspend 함수의 한계를 넘어 순차적으로 값을 방출하는 비동기 데이터 스트림입니다. 🌊
Flow는 emit으로 값을 생성하는 Producer, map이나 filter로 값을 변환하는 Intermediary (선택 사항), 그리고 collect로 값을 소비하는 Consumer의 세 가지 영역으로 작동합니다. ⚙️
Cold Flow는 소비자가 구독을 시작해야 데이터를 생성하며, 데이터가 내부에서 생성되고 하나의 생산자에 하나의 소비자가 연결되는 특징을 가집니다 (예: CD 플레이어). 🧊
Hot Flow는 구독자가 없어도 데이터를 생성하고 실시간으로 값을 전달하며, 데이터가 외부에서 생성되고 하나의 생산자에 다수의 소비자가 연결될 수 있습니다 (예: 라디오). 🔥
안드로이드에서 Flow를 사용할 때는 생명 주기 관리, 구성 변경 대응, UI 이벤트 성격에 맞는 Flow 유형 선택 (Cold/Hot, StateFlow/SharedFlow), 적절한 CoroutineContext 선택, 예외 처리 등 다양한 고려 사항이 있습니다. 📱