Работал ли со StateFlow

«Работал ли со StateFlow» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. StateFlow — это поток данных, который хранит текущее состояние и эмитит его новым подписчикам. Отличается от SharedFlow тем, что всегда имеет начальное значение и хранит только последнее состояние.

val stateFlow = MutableStateFlow(initialValue = 0)

// Подписка
lifecycleScope.launch {
    stateFlow.collect { value ->
        // Обработка нового значения
    }
}

// Обновление значения
stateFlow.value = 1

Особенности:

  • Требует начальное значение.
  • Коллектит только последнее значение (в отличие от SharedFlow).
  • Потококоно безопасный (можно обновлять из любого потока).
  • Можно использовать с repeatOnLifecycle для избежания утечек.