Flow — это асинхронный поток данных, построенный на основе корутин в Kotlin. Он позволяет последовательно передавать несколько значений от производителя к потребителю.
Как работает в Android:
kotlin
Observer в старых подходах.
kotlin
kotlin
Ключевые особенности Flow:
collect). Без него производитель не запускается.map, filter, reduce, combine, stateIn, shareIn и др.) для трансформации и обработки данных.StateFlow и SharedFlow являются специализированными типами Flow, часто используемыми в UI (ViewModel) для представления состояний и событий.StateFlow vs SharedFlow:
| Характеристика | StateFlow | SharedFlow |
|---|---|---|
| Тип | State-holding (имеет начальное значение) | General-purpose cold/hot (настраиваемый) |
| Начальное значение | Обязательно | Опционально |
| Повторная эмиссия для новых подписчиков | Эмитирует последнее значение при подписке | Зависит от параметра replay |
| Поддержка обратного давления | Нет (работает с последним значением) | Да |
| Основное использование | Представление состояния UI | Эмиссия событий, общий поток данных |