Горячие (Hot) потоки:
LiveData, StateFlow, SharedFlow.Холодные (Cold) потоки:
Flow, Sequence.StateFlow — это специализированный SharedFlow, который запоминает последнее значение.
SharedFlow можно настроить так, чтобы он работал как StateFlow с буфером replay=1.
Ключевые отличия:
| Операция | Горячий поток | Холодный поток |
|---|---|---|
| Активность | Всегда | По подписке |
| Выполнение логики | Единоразово | При каждой подписке |
| Запоминание состояния | Да (LiveData, StateFlow, SharedFlow с replay) | Нет (по умолчанию) |
| Многопользовательский | Да | Нет (каждый подписчик получает отдельную копию) |
Горячие потоки используются для представления состояния UI или общих данных. Холодные потоки — для выполнения операций при подписке, таких как сетевые запросы или запросы к базе данных.
Пример холодного потока:
kotlin
Пример горячего потока (StateFlow):
kotlin