Sobes.tech
Junior — Middle

Jaké přístupy a metody znáš pro implementaci horkého toku v systému flow?

sobes.tech AI

Odpověď od AI

V Androidu, při použití Kotlin Flow, je horký proud (hot flow) proud, který pokračuje v vysílání hodnot bez ohledu na to, zda jsou přihlášení odběratelé. Hlavní přístupy k implementaci horkého proudu:

  • SharedFlow — speciální typ horkého proudu, který umožňuje více odběratelům přijímat stejné hodnoty. Lze nakonfigurovat buffer a chování při přihlášení.

  • StateFlow — varianta SharedFlow, která ukládá aktuální stav. Užitečné pro reprezentaci stavů UI.

  • Použití kanálů (Channels) — lze vytvořit kanál a převést jej na Flow, který bude horký.

  • Použití operátorů shareIn nebo stateIn — umožňují převést studený Flow na horký, sdílením emise mezi odběrateli.

Příklad horkého proudu s SharedFlow:

val sharedFlow = MutableSharedFlow<Int>()

// Emitor
GlobalScope.launch {
    for (i in 1..5) {
        sharedFlow.emit(i)
        delay(1000)
    }
}

// Odběratel
sharedFlow.onEach { value ->
    println("Přijato $value")
}.launchIn(GlobalScope)

Tímto způsobem horký proud pokračuje v generování dat i bez odběratelů, a noví odběratelé dostávají data od okamžiku přihlášení.