패스잇
모바일 개발 · 중급

Kotlin Flow 기반의 StateFlow와 Android 아키텍처 컴포넌트의 LiveData는 각각 어떤 특징을 가지고 있으며, UI 상태 관리에 있어 어떤 상황에서 어떤 것을 사용하는 것이 더 효과적인지 비교하여 설명해주세요.

힌트 · LiveData는 lifecycle-aware하며 단일 값에 최적화되어 있고, StateFlow는 Flow의 강력한 연산자를 활용하며 cold/hot stream 특성을 가집니다. 사용 사례와 리소스 소모 측면에서 비교하세요.

StateFlowLiveDataCold StreamHot Stream상태 홀더

모범답안

StateFlow와 LiveData는 모두 UI 상태 관리에 사용되지만 몇 가지 중요한 차이점이 있습니다.

LiveData는 Android 아키텍처 컴포넌트의 일부로, lifecycle-aware하다는 장점이 있습니다. 즉, Activity나 Fragment의 lifecycle 상태를 자동으로 감지하여 불필요한 업데이트를 방지합니다. 또한 단일 값 홀더로서 간단한 데이터 스트림에 최적화되어 있습니다.

반면 StateFlow는 Kotlin Flow 기반으로, 더 강력한 연산자를 활용할 수 있습니다. Hot stream이기 때문에 구독 시점에 관계없이 항상 최신 값을 방출하며, 여러 개의 값을 지속적으로 방출하는 복잡한 상태 관리에 유용합니다.

어떤 것을 선택할지는 상황에 따라 다릅니다. 간단한 UI 상태 업데이트, lifecycle 관리가 중요한 경우에는 LiveData가 적합합니다. 복잡한 상태 변화를 처리하고 Flow의 다양한 연산자를 활용하고 싶다면 StateFlow가 더 나은 선택일 수 있습니다. StateFlow는 LiveData에 비해 리소스 소모가 더 클 수 있다는 점도 고려해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Android / Kotlin 면접 질문

← Android / Kotlin 면접 질문 전체 보기