개발일기

Kotlin Flow와 LiveData 비교

뱅우 2025. 8. 20. 14:20
반응형
Kotlin Flow와 LiveData 비교

Kotlin Flow와 LiveData 비교

안드로이드 개발에서 UI 데이터를 다룰 때 흔히 사용되는 두 가지 대표적인 도구가 있습니다. 바로 LiveDataKotlin Flow입니다. 둘 다 비동기 데이터 스트림을 처리하지만, 태생과 활용 목적이 다르기 때문에 상황에 맞는 선택이 필요합니다.

1. LiveData란?

LiveData는 안드로이드 아키텍처 컴포넌트로, 수명주기(Lifecycle)를 인식하는 데이터 홀더 클래스입니다.

private val _count = MutableLiveData<Int>(0)
val count: LiveData<Int> = _count

fun increase() {
    _count.value = (_count.value ?: 0) + 1
}

특징:

  • Activity/Fragment의 수명주기를 인식한다.
  • UI 업데이트에 최적화되어 있다.
  • 테스트가 상대적으로 불편하다.

2. Flow란?

Kotlin Flow는 Kotlin Coroutine 기반의 비동기 데이터 스트림 처리 라이브러리입니다. 데이터 흐름을 선언형으로 표현할 수 있고, 다양한 연산자를 활용할 수 있습니다.

private val _count = MutableStateFlow(0)
val count: StateFlow<Int> = _count

fun increase() {
    _count.value += 1
}

특징:

  • Coroutine 친화적이다.
  • 다양한 연산자(map, filter 등)를 사용할 수 있다.
  • 안드로이드 외 환경(서버, 데스크톱 등)에서도 활용 가능하다.

3. LiveData vs Flow 차이

구분 LiveData Flow
Lifecycle 인식 지원 기본적으로 지원하지 않음
비동기 처리 제한적 Coroutine 기반 강력한 비동기 처리
플랫폼 의존성 안드로이드 전용 Kotlin 범용
연산자 지원 거의 없음 풍부한 연산자 제공

4. 언제 어떤 것을 써야 할까?

  • LiveData → 단순 UI 상태 관리, 안드로이드 컴포넌트와 밀접하게 연동할 때
  • Flow → 복잡한 비동기 스트림 처리, 데이터 변환/조합이 필요할 때

정리: LiveData는 안드로이드 UI에 특화되어 있고, Flow는 범용적인 데이터 스트림 처리에 강력합니다. 최근에는 StateFlowSharedFlow가 등장하면서, 새로운 프로젝트에서는 Flow 기반 설계가 점점 더 많이 활용되고 있습니다.

반응형