Sobes.tech
Middle

Wat is het verschil tussen warme en koude stromen?

sobes.tech AI

Antwoord van AI

Heet (Hot) stromen:

  • Zijn actief, ongeacht de aanwezigheid van waarnemers.
  • Leveren altijd de laatste beschikbare gegevens aan abonnees vanaf het moment van abonneren.
  • Voorbeelden: LiveData, StateFlow, SharedFlow.

Koude (Cold) stromen:

  • Zijn alleen actief wanneer er minstens één waarnemer is.
  • Voeren de logica uit bij elke nieuwe inschrijving.
  • Voorbeelden: Flow, Sequence.

StateFlow is een gespecialiseerde SharedFlow die de laatste waarde onthoudt. SharedFlow kan worden geconfigureerd om te werken als een StateFlow met een replay-buffer van 1.

Belangrijke verschillen:

Operatie Heet stroom Koud stroom
Activiteit Altijd Bij inschrijving
Logica uitvoeren Een keer Bij elke inschrijving
Toestand onthouden Ja (LiveData, StateFlow, SharedFlow met replay) Nee (standaard)
Meervoudig gebruik Ja Nee (elke abonnee krijgt een aparte kopie)

Heet stromen worden gebruikt om de UI-toestand of gedeelde gegevens weer te geven. Koude stromen worden gebruikt om operaties uit te voeren bij inschrijving, zoals netwerkverzoeken of databasequery's.

Voorbeeld van koude stroom:

// Deze stroom laadt gegevens alleen als er een abonnee is
fun loadData(): Flow<Data> = flow {
    // Hier gebeurt het laden van gegevens
    emit(NetworkApi.getData())
}

Voorbeeld van hete stroom (StateFlow):

// Deze stroom heeft altijd een waarde en is beschikbaar voor inschrijving
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

fun updateState(newState: UiState) {
    uiState.value = newState
}