반응형
Kotlin Flow vs LiveData - 무엇을 언제 써야 할까?
안드로이드 개발을 하면서 데이터를 UI에 반영할 때 가장 많이 쓰는 두 가지가 LiveData와 Kotlin Flow입니다.
하지만 두 기술 모두 비슷한 역할을 하기에 “언제 어떤 걸 써야 하지?” 헷갈리는 경우가 많죠.
이 글에서는 LiveData와 Flow의 차이점, 장단점, 선택 기준까지 실전 위주로 정리해드립니다.
📌 기본 개념 비교
| 항목 | LiveData | Kotlin Flow |
|---|---|---|
| 라이프사이클 인식 | O | X (따로 처리 필요) |
| 구성 요소 | Android Jetpack | Kotlin Coroutines |
| Backpressure 처리 | 불가능 | 가능 (buffer 등 사용) |
| Cold Stream 지원 | X | O |
| 테스트 편의성 | △ (라이프사이클 제어 필요) | ◎ (Coroutines 기반 테스트 가능) |
🎯 언제 LiveData를 쓸까?
- 간단한 UI 상태를 처리할 때
- Activity/Fragment 생명주기를 자동으로 관리하고 싶을 때
- 기존 MVVM 코드에서 빠르게 유지보수할 때
// ViewModel
val userName = MutableLiveData<String>()
// Fragment
viewModel.userName.observe(viewLifecycleOwner) {
textView.text = it
}
🚀 언제 Flow를 써야 할까?
- 비동기 데이터 스트림이 필요할 때
- 백프레셔(backpressure) 처리가 중요할 때
- 라이프사이클과 무관한 로직(Repository, UseCase 등)
// ViewModel
val userFlow = flow {
emit(api.getUserName())
}.flowOn(Dispatchers.IO)
// Fragment
lifecycleScope.launchWhenStarted {
viewModel.userFlow.collect {
textView.text = it
}
}
💡 결론: 어떤 걸 써야 할까?
- UI 위주 / 라이프사이클 연동 필요 →
LiveData - 비동기 흐름 / 다양한 연산자 활용 / 백엔드 처리 →
Flow
요즘은 ViewModel ↔ UseCase는 Flow, UI 연동은 StateFlow나 LiveData로 구성하는 혼합 방식이 대세입니다.
📌 참고 팁
StateFlow는 LiveData의 대체로 추천됩니다.- Jetpack Compose 사용 시엔
StateFlow와collectAsState()활용이 표준입니다.
반응형
'개발일기' 카테고리의 다른 글
| Jetpack Compose로 만드는 안드로이드 UI 기본 가이드 (7) | 2025.08.08 |
|---|---|
| Jetpack Compose vs XML UI - 안드로이드는 어디로 가고 있나? (6) | 2025.08.07 |
| 2025 안드로이드 targetSdkVersion 35 완벽 가이드 (8) | 2025.08.05 |
| 📱 안드로이드 앱 크기 줄이기 실전 팁 (2025 최신) (14) | 2025.08.04 |
| 2025년 최신: Kotlin 코루틴 실전 예제 총정리 (4) | 2025.08.01 |