AI Briefing

Android Kotlin StateFlow 도입기

·2022.12.14 19:32

클린 아키텍처 구현을 위해 Android 개발 과정에서 LiveData를 StateFlow로 교체한 경험을 공유한다.

기존에 사용하던 LiveData는 Android 컴포넌트의 생명주기를 인식한다는 장점이 있지만, Android 플랫폼에 종속적이라는 한계가 있습니다. 이로 인해 플랫폼 독립적인 Domain Layer에서 사용하기 어렵고 모듈화 시 의존성 문제가 발생할 수 있습니다.

이를 해결하기 위해 Kotlin Flow의 확장 형태인 StateFlow를 도입했습니다. StateFlow는 다음과 같은 특징을 가집니다.

  • Hot Stream 방식으로, 항상 최신 상태 값을 유지하며 여러 Collector를 지원함
  • 초기값이 반드시 필요하며, 구독 시점에 항상 최신 값을 전달함
  • SharedFlow와 달리 상태를 보유하므로 UI 상태 노출에 효과적임

실제 적용 시 ViewModel에서는 MutableStateFlow를 통해 상태를 업데이트하고, Activity/Fragment에서는 lifecycleScoperepeatOnLifeCycle 등을 사용하여 생명주기에 안전하게 데이터를 수집(collect)하도록 구현했습니다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.