LiveData의 한계를 극복하고자 StateFlow를 도입, 클린 아키텍처 적용
StateFlow는 UI 상태 관리에 효과적이며, LiveData를 대체 가능
launchWhenStarted를 활용하여 생명주기에 따른 데이터 처리를 구현
LiveData는 안드로이드 플랫폼에 종속적이며, UI가 없는 곳에서 사용이 어렵다. 따라서 클린 아키텍처의 Domain Layer에서는 부적합하다. StateFlow는 이러한 단점을 보완하여 안드로이드 생명주기를 고려한 UI 상태 관리를 가능하게 한다.
StateFlow는 항상 값을 가지며, 여러 개의 collector를 지원한다. collectLatest를 통해 최신 값을 수신하며, 를 사용하여 생명주기에 맞춰 동작을 제어한다. 따라서 와 에 효과적이다.
StateFlow는 LiveData를 대체할 수 있지만, 생명주기 관리에 주의해야 한다. launchWhenStarted와 같은 Lifecycle 관련 함수를 적절히 활용하여 메모리 누수를 방지해야 한다. UI 상태와 데이터 흐름을 명확히 분리하여 코드의 가독성을 높이는 것이 중요하다.