Sobes.tech
Junior — Middle

Que abordagens e métodos de implementação de fluxo quente no sistema flow você conhece?

sobes.tech IA

Resposta da IA

No Android, usando Kotlin Flow, um fluxo quente (hot flow) é um fluxo que continua emitindo valores independentemente da presença de assinantes. As principais abordagens para implementar um fluxo quente:

  • SharedFlow — um tipo especial de fluxo quente que permite a vários assinantes receber os mesmos valores. Pode-se configurar um buffer e o comportamento na assinatura.

  • StateFlow — uma variação do SharedFlow que armazena o estado atual. Útil para representar estados de UI.

  • Uso de canais (Channels) — pode-se criar um canal e convertê-lo em um Flow, que será quente.

  • Uso dos operadores shareIn ou stateIn — permitem transformar um Flow frio em quente, compartilhando a emissão entre os assinantes.

Exemplo de fluxo quente com SharedFlow:

val sharedFlow = MutableSharedFlow<Int>()

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

// Assinante
sharedFlow.onEach { value ->
    println("Recebido $value")
}.launchIn(GlobalScope)

Dessa forma, o fluxo quente continua gerando dados mesmo que não haja assinantes, e novos assinantes recebem os dados a partir do momento da assinatura.