Как работает remember в Jetpack Compose

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

Ответ

remember сохраняет значение в композиции и возвращает его при последующих рекомпозициях. Если входные ключи (keys) изменились, значение пересчитывается.

var counter by remember { mutableStateOf(0) } // Сохраняется между рекомпозициями

Ключевые моменты:

  1. Значение сохраняется только в пределах текущей композиции
  2. При изменении ключей (переданных в remember(key1, key2)) значение пересоздается
  3. Под капотом использует механизм slot table Compose

Пример с ключами:

val result = remember(query) {
    heavyCalculation(query) // Пересчитается только при изменении query
}