StateFlow
- 상태 유지:
- 항상 현재 상태 값을 유지하며, 구독자가 구독할 때 즉시 그 값을 제공합니다.
- 구독자는 가장 최근의 상태를 항상 받을 수 있습니다.
- 최신 상태:
- StateFlow는 상태가 변경될 때마다 구독자에게 자동으로 업데이트를 전달합니다. 이로 인해 UI 상태 관리에 유용합니다.
- 읽기 전용 인터페이스:
- 외부에서 값을 변경할 수 없도록 StateFlow는 읽기 전용이며, 상태를 변경하려면 MutableStateFlow를 사용해야 합니다.
- Hot Stream:
- StateFlow는 "hot" 스트림으로, 구독자가 없더라도 값을 유지합니다.
SharedFlow
- 멀티캐스트:
- 여러 구독자에게 동시에 값을 방출할 수 있는 "hot" 스트림입니다. 구독자가 없는 경우에도 값을 방출할 수 있습니다.
- 다양한 배출 방식:
- SharedFlow는 구독자가 없을 때 값을 방출하고, 구독자가 있으면 그 값을 전달합니다. 이를 통해 이벤트를 여러 구독자에게 전달할 수 있습니다.
- 이벤트 기반:
- 주로 이벤트(예: 사용자 행동, 네트워크 응답)를 전달하는 데 적합합니다. 구독자가 있는 경우만 이벤트를 전달하고, 구독자가 없으면 무시할 수 있습니다.
- 값 보존 방식:
- SharedFlow는 값의 보존을 설정할 수 있으며, 기본적으로는 마지막 N개의 값을 저장할 수 있습니다. replay 파라미터를 통해 값을 보존할 수 있습니다.
- StateFlow는 현재 상태를 관리하는 데 적합하며, UI와의 상호작용에서 상태 변화를 실시간으로 반영하는 데 유용합니다.
- SharedFlow는 이벤트를 여러 구독자에게 동시에 전파하는 데 적합하며, 이벤트 기반의 비동기 통신에서 자주 사용됩니다.
// StateFlow 예제
val stateFlow = MutableStateFlow(0)
stateFlow.value = 1 // 상태 변경
// SharedFlow 예제
val sharedFlow = MutableSharedFlow<Int>(replay = 1)
sharedFlow.emit(1) // 이벤트 방출
출처 : ChatGPT
'kotlin' 카테고리의 다른 글
StateFlow (0) | 2024.10.15 |
---|---|
Flow - SharedFlow, MutableSharedFlow (1) | 2024.10.15 |