Какие знаешь виды State в Jetpack Compose

«Какие знаешь виды State в Jetpack Compose» — вопрос из категории Jetpack Compose, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Jetpack Compose есть несколько видов State:

  1. MutableState - базовый наблюдаемый тип состояния. При изменении вызывает рекомпозицию:
var count by remember { mutableStateOf(0) }
  1. State - только для чтения версия MutableState.

  2. SnapshotStateList/Map - наблюдаемые коллекции:

val list = remember { mutableStateListOf<String>() }
  1. DerivedState - вычисляемое состояние на основе других состояний:
val showButton by derivedStateOf { list.size > 5 }
  1. Потоковые состояния - интеграция с Flow/LiveData:
val data by someFlow.collectAsState()

Ключевые особенности:

  • Все изменения должны происходить в UI-потоке
  • Для сохранения между рекомпозициями используется remember
  • Для сохранения между конфигурациями - rememberSaveable