StateFlow와 SharedFlow 차이: 안드로이드에서 상태와 이벤트를 왜 나눠야 할까
StateFlow와 SharedFlow 차이는 문법보다 역할에서 갈립니다. 이 글에서는 화면 상태와 일회성 액션을 왜 나눠야 하는지, 재구독과 replay 때문에 어떤 버그가 생기는지, ViewModel과 Compose에서는 어떻게 나누는 편이 안전한지 실무 기준으로 정리합니다.
StateFlow와 SharedFlow 차이는 문법보다 역할에서 갈립니다. 이 글에서는 화면 상태와 일회성 액션을 왜 나눠야 하는지, 재구독과 replay 때문에 어떤 버그가 생기는지, ViewModel과 Compose에서는 어떻게 나누는 편이 안전한지 실무 기준으로 정리합니다.
SavedStateHandle을 모든 상태 저장 도구처럼 쓰면 구조가 무거워지고, 반대로 전혀 쓰지 않으면 process death 대응이 약해집니다. 이 글에서는 navigation args, 검색 조건, 탭 선택 같은 최소 복원 상태를 기준으로 언제 SavedStateHandle이 필요한지 정리합니다.
안드로이드 ViewModel에 모든 상태를 넣어야 하는 것은 아닙니다. UI 상태와 비즈니스 상태를 나누고, input state, loading state, domain state, one-time event를 어디에 두면 좋은지 실무 기준으로 정리합니다.