Sobes.tech
Middle

Koja je razlika između toplih i hladnih tokova?

sobes.tech АИ

Одговор од АИ

Vrući (Hot) tokovi:

  • Aktivni su bez obzira na prisustvo posmatrača.
  • Uvek pružaju najnovije dostupne podatke pretplatnicima od trenutka pretplate.
  • Primeri: LiveData, StateFlow, SharedFlow.

Hladni (Cold) tokovi:

  • Aktivni su samo kada postoji bar jedan posmatrač.
  • Izvršavaju logiku pri svakoj novoj pretplati.
  • Primeri: Flow, Sequence.

StateFlow je specijalizovani SharedFlow koji pamti poslednju vrednost. SharedFlow može biti konfigurisan da radi kao StateFlow sa bufferom replay=1.

Ključne razlike:

Operacija Vrući tok Hladni tok
Aktivnost Uvek Pri pretplati
Izvršavanje logike Jednom Pri svakoj pretplati
Pamćenje stanja Da (LiveData, StateFlow, SharedFlow sa replay) Ne (podrazumevano)
Višekorisnički Da Ne (svaki pretplatnik dobija kopiju)

Vrući tokovi se koriste za predstavljanje stanja UI ili zajedničkih podataka. Hladni tokovi se koriste za izvršavanje operacija pri pretplati, kao što su mrežni zahtevi ili upiti u bazu podataka.

Primer hladnog toka:

// Ovaj tok će učitati podatke samo ako postoji pretplatnik
fun loadData(): Flow<Data> = flow {
    // Ovde se vrši učitavanje podataka
    emit(NetworkApi.getData())
}

Primer vrućeg toka (StateFlow):

// Ovaj tok uvek ima vrednost i dostupan je za pretplatu
val uiState: StateFlow<UiState> = MutableStateFlow(LoadingUiState)

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