[kotlin] LiveData와 StateFlow의 차이점
안녕하세요! 오늘은 안드로이드 앱에서 데이터를 처리하기 위한 두 가지 인기 있는 기술인 LiveData
와 StateFlow
에 대해 비교해 보겠습니다.
1. LiveData란 무엇인가?
LiveData
는 안드로이드 아키텍처 컴포넌트 라이브러리에서 제공하는 클래스로, 수명 주기를 인식하는 데이터 홀더입니다. 이를 통해 앱의 UI가 데이터 변경을 관찰하고, 관련된 액션을 수행할 수 있습니다.
예를 들어, 사용자가 데이터를 수정할 때마다 UI가 자동으로 업데이트되도록 설계할 수 있으며, 메모리 누수 없이 관찰 가능한 데이터를 처리할 수 있습니다.
val liveData: LiveData<String> = MutableLiveData()
2. StateFlow란 무엇인가?
반면에, StateFlow
는 Kotlin의 Flow
API에서 제공하는 새로운 기능으로, Coroutine
의 일부입니다. StateFlow
는 변경 가능한 상태를 보유하고 있으며 이러한 변경을 관찰할 수 있는 특징을 가지고 있습니다.
StateFlow
는 주로 데이터 스트림의 현재 상태를 표현하는 데 사용되며, emit
함수를 통해 값을 전달하고, collect
함수를 통해 값을 수집합니다.
val stateFlow: MutableStateFlow<String> = MutableStateFlow("")
3. 차이점
주요 차이점은 다음과 같습니다.
- 구독자 수:
LiveData
는 여러 개의 관찰자를 가질 수 있지만,StateFlow
는 단일 관찰자만을 가질 수 있습니다. - 메모리 누수:
LiveData
는 수명 주기 관련 메모리 누수를 방지하고,StateFlow
는 이를 자동으로 처리하지 않습니다. - 특징:
LiveData
는ViewModel
과 함께 사용되며,StateFlow
는Coroutine
과 함께 사용됩니다.
4. 정리
LiveData
와 StateFlow
는 데이터를 처리하기 위한 두 가지 강력한 도구이지만, 각각의 특징에 맞게 적절히 사용하는 것이 중요합니다. LiveData
는 안드로이드 아키텍처 컴포넌트와 함께 사용되며, StateFlow
는 Kotlin의 Flow
와 Coroutine
과 함께 사용됩니다.
참고문헌: