Sobes.tech
Middle

Mis vahe on kuumadel ja külmadel voogudel?

sobes.tech AI

Vastus AI-lt

Kuumad (Hot) vooged:

  • aktiivsed olenemata vaatajate olemasolust.
  • alati edastavad viimased saadaval olevad andmed tellijatele alates tellimise hetkest.
  • Näited: LiveData, StateFlow, SharedFlow.

Külmad (Cold) vooged:

  • aktiivsed ainult siis, kui vähemalt üks vaataja on olemas.
  • täidavad logikat iga uue tellimise korral.
  • Näited: Flow, Sequence.

StateFlow on spetsialiseeritud SharedFlow, mis mäletab viimast väärtust. SharedFlow saab seadistada töötama nagu StateFlow pufferiga replay=1.

Peamised erinevused:

Operatsioon Kuum voog Külm voog
Aktiivsus Alati Tellimise ajal
Logika täitmine Ühekordselt Iga tellimise korral
Seisundi mäletamine Jah (LiveData, StateFlow, SharedFlow replay-ga) Ei (vaikimisi)
Mitme kasutaja kasutamine Jah Ei (iga tellija saab eraldi koopia)

Kuumad vooged kasutatakse UI seisundi või üldiste andmete esitamiseks. Külmad vooged on mõeldud operatsioonide täitmiseks tellimisel, nagu võrgupäringud või andmebaasi päringud.

Külma vooge näide:

// See voog laadib andmeid ainult siis, kui on tellija
fun loadData(): Flow<Data> = flow {
    // Siin toimub andmete laadimine
    emit(NetworkApi.getData())
}

Kuum voog (StateFlow) näide:

// See voog omab alati väärtust ja on saadaval tellimiseks
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

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