프론트엔드
Android Kotlin StateFlow 도입기
두줄요약
Kotlin Flow와 StateFlow를 도입한 경험을 바탕으로 LiveData의 한계와 대체 가능성을 정리했습니다. 클린 아키텍처와 생명주기 대응 관점에서 Flow 활용 방법도 살펴봤습니다.
핵심 내용
- 안드로이드 Kotlin Flow 도입 경험과, LiveData를 대체할 수 있는 StateFlow의 개념 정리
- LiveData의 플랫폼 종속성과 계층 분리 한계를 짚고, 클린 아키텍처에서 Flow 계열로 옮길 수 있는 배경 설명
- StateFlow는 항상 최신 값을 가지는 Hot Stream, SharedFlow는 이벤트성 값 전달에 적합한 구조로 구분
구조와 흐름
- StateFlow는 초기값을 요구하고 여러 collector가 최신 상태를 공유
- SharedFlow는 초기값 없이 replay, buffer, overflow 설정으로 이벤트를 다루는 방식
- Flow를 StateFlow로 바꿀 때 stateIn, scope, SharingStarted, initialValue 사용
적용해볼 점
- ViewModel에서는 MutableStateFlow와 update, collectLatest 조합으로 UI 상태 관리
- Activity와 Fragment에서는 launchWhenStarted, repeatOnLifecycle로 생명주기 대응
- 클린 아키텍처와 모듈화 환경에서 LiveData 의존성 줄이는 대안 검토
