Что такое snapshotFlow

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

Ответ

snapshotFlow — это функция в Jetpack Compose, которая преобразует State<T> в Flow<T>. Она позволяет реагировать на изменения состояния в Compose, используя Flow API (например, для side-эффектов в LaunchedEffect).

Пример:

val state = remember { mutableStateOf(0) }

LaunchedEffect(Unit) {
    snapshotFlow { state.value }
        .collect { value -> 
            println("State changed: $value") 
        }
}

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

  • Автоматически отменяется при выходе из Composition.
  • Эффективен, так как эмитит значения только при реальных изменениях.
  • Полезен для интеграции с кодом, использующим Flow (например, для combine или flatMapLatest).