plzy의 개발 블로그

LiveData 대신 Flow가 나온 이유? 본문

Android

LiveData 대신 Flow가 나온 이유?

plzyhappy 2022. 6. 22. 09:08

Android에서 LiveData는 ViewModel에서의 데이터 값을 가지고 있어 view를 최신 값으로 유지해준다.

이러한 개념은 Android 개발을 한 단면 익숙할 것이다.

자주 사용하고 있는 LiveData가 Flow로 대체될 위기에 처했다.

어떠한 이유 때문에 그러는 걸까?

먼저 LiveData의 장단점에 대해 알아보자

LiveData의 장점

  • Observer 패턴을 사용하기 때문에, 데이터의 변화를 실시간으로 구독자에게 알려 최신 값으로 유지할 수 있다.
  • 라이프사이클을 알고 있기 때문에 생명주기에 따라 변한다.
  • viewModel과 같이 사용할 경우 화면 회전 같은 현상이 일어나도 view의 데이터 값을 유지할 수 있다.

LiveData의 장점만 보면 flow가 나올 이유가 없을 것 같다.
하지만 LiveData에서도 치명적인 단점이 있다.

LiveData의 단점

  • 클린 아키텍처의 domain에서는 순수 kotlin/java 만 써야 한다.
    하지만 LiveData는 Android 플랫폼 의존되어 있어 옳지 못한 방법이 된다.
  • kotlin/coroutine 기반으로 만들어지지 않았다.
  • 변환하는데 많은 보일러 플레이트 코드가 있다.
  • 실행되는데 컨텍스트의 제어권이 부족하다.

이러한 단점을 보안하고자 Flow가 나왔다.

 

flow는 kotlin/corutine 기반이고 순수 kotlin 이기 때문에 LiveData의 문제점을 해결할 수 있다.