Groo

Flow와 StateFlow의 차이 본문

프로그래밍 언어/Kotlin

Flow와 StateFlow의 차이

김주엽 2022. 3. 27. 14:45

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다.

그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World)


Flow는 데이터의 흐름이다.

즉, Flow는 데이터의 흐름을 발생시킬 수만 있을 뿐 Flow 자체를 저장할 수는 없다.

 

안드로이드에서 Flow만을 이용하여 UI 상태를 업데이트하기 위해 아래 두 가지 방법이 존재했다.

  • 매번 서버 또는 내부 DB로부터 데이터 가져오기
  • Flow를 통해 collect한 데이터를 ViewModel에 저장하여 사용하기

두 번째 방법이 첫 번째 방법보다는 효율적이긴 하지만 데이터를 저장하려면 별도의 데이터 홀더 변수를 만들어야 한다.

그러나 데이터 홀더 변수는 리액티브 하지 못하기 때문에 UI에서 해당 데이터 변수를 구독하는 패칭 로직을 추가로 구현해야 한다.

해당 변수들이 모여 나중에는 보일러 플레이트 코드가 되어버린다.

 

StateFlow는 데이터 홀더 변수 역할과 Flow의 데이터 스트림 역할까지 함께 한다.

즉, UI에서는 StateFlow 하나만을 구독하고 있으면 최신 데이터를 지속적으로 전달받을 수 있다.


이렇게 Flow와 StateFlow의 차이점에 대해서 알아봤다.

오늘도 힘내고 🤞

Comments