Что такое SharedFlow и чем он отличается от StateFlow?

SharedFlow - это поток данных из coroutines, который рассылает значения нескольким подписчикам ("hot" поток).

Короткий ответ

Что ответить на собеседовании

SharedFlow - это поток данных из coroutines, который рассылает значения нескольким подписчикам ("hot" поток).

Подробный разбор

Ответ с пояснениями

SharedFlow - это поток данных из coroutines, который рассылает значения нескольким подписчикам ("hot" поток).

StateFlow - это вариация SharedFlow, представляющая поток состояний. Всегда имеет начальное значение и рассылает последнее известное значение новым подписчикам.

Ключевые отличия:

Характеристика SharedFlow StateFlow
Начальное значение Не имеет по умолчанию, можно задать replay Всегда имеет обязательное начальное значение
Повтор значений для новых подписчиков Управляется параметром replay Всегда повторяет последнее значение
Буфер значений Размер буфера задается параметром extraBufferCapacity Размер буфера - 0 (за исключением последнего значения)
Эмиссия одинаковых значений Эмитирует все значения, даже если они одинаковы Не эмитирует одинаковые последовательные значения (если они равны по .equals())
Use case События, стримы данных Состояния UI или другие текущие состояния

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку