stateflow (3)


StateFlow vs SharedFlow 완벽 정리: 언제 무엇을 써야 할까?

StateFlow vs SharedFlow 완벽 정리: 언제 무엇을 써야 할까?

오늘의 개발 스터디 안드로이드 앱을 개발할 때 비동기 데이터 스트림을 다루기 위해 Kotlin의 Coroutines와 Flow를 정말 많이 사용하죠. 그중에서도 LiveData를 대체하며 단골 손님으로 등장하는 StateFlow와 SharedFlow!두 녀석 다 "Hot Stream"이라는 공통점이 있어서 처음 접하면 꽤나 헷갈립니다. 오늘은 이 둘의 차이점을 명확하게 정리하고, 실무에서 어떤 상황에 어떤 Flow를 선택해야 하는지 깔끔하게 정리해 보겠습니다.1. Hot Stream이란? (막간 개념 정리)StateFlow와 SharedFlow를 이해하려면 먼저 Hot Stream의 개념을 알아야 합니다.Cold Stream (일반 Flow): 소비자가 수집(collect)을 시작해야만 데이터를 생산합..

StateFlow는 원래 Hot Stream인데, 왜 shareIn/stateIn을 쓸까?

StateFlow는 원래 Hot Stream인데, 왜 shareIn/stateIn을 쓸까?

1. 오해 바로잡기: StateFlow는 원래 Hot입니다.Flow: Cold Stream (수집자가 없으면 데이터를 생성하지 않음)StateFlow / SharedFlow: Hot Stream (수집자가 있든 없든 데이터를 가지고 있거나 발행함)2. 그럼 stateIn과 shareIn은 왜 존재하나요?우리가 데이터 소스(예: DB, 네트워크)로부터 받아오는 데이터는 보통 일반적인 Cold Flow인 경우가 많습니다.문제 상황: 이 Cold Flow를 UI에서 그대로 사용하면, 화면을 돌리거나 새로운 구독자가 생길 때마다 DB를 다시 조회하거나 네트워크 통신을 처음부터 다시 시작하게 됩니다. (리소스 낭비)해결 방법: 이 Cold Flow를 Hot Flow(StateFlow/SharedFlow)로 "업그..

왜 상태 관리가 중요한가? (State Management)

왜 상태 관리가 중요한가? (State Management)

상태(State)"란 무엇인가? - 특정 시점에 사용자가 화면에서 보고 있는 모든 정보 를 의미합니다. 1. 실생활 예시로 이해하기스마트폰의 배터리 아이콘을 생각해 보세요.배터리가 80%일 때 -> 초록색 아이콘 (상태 A)배터리가 15%일 때 -> 빨간색 아이콘 (상태 B)충전기를 꽂았을 때 -> 번개 모양 아이콘 (상태 C)여기서 배터리 잔량(숫자) 은 데이터이고, 그 데이터에 따라 변하는 아이콘의 모양과 색상이 바로 상태입니다. - StateFlow UI는 상태를 바라보기만 한다: UI는 "상태가 변하면 알려줘, 내가 알아서 바꿀게"라고 선언합니다.데이터의 일관성: 화면을 돌리거나 다른 화면에 갔다가 돌아와도 상태만 잘 보존되어 있다면 UI는 항상 올바른 모습을 유지2. StateFlow의 5가지 ..