Что такое ComposeRuntime

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

Ответ

Compose Runtime — это ядро Jetpack Compose, отвечающее за управление состоянием, рекомпозицию и построение UI-дерева. Оно не зависит от Android и может работать вне UI-слоя (например, в тестах или десктопных приложениях).

Ключевые функции:

  1. Трекер состояний — автоматически отслеживает изменения State/MutableState.
  2. Рекомпозиция — пересчитывает только измененные части UI.
  3. Слот-таблица — хранит данные о позиции элементов в дереве.

Пример:

@Composable
fun Counter() {
    var count by remember { mutableStateOf(0) } // Runtime отслеживает это состояние
    Button(onClick = { count++ }) {
        Text("Clicked $count times") // Рекомпозиция только этого Text
    }
}

Нюансы:

  • Работает через генерацию кода (композер-компилятор).
  • remember сохраняет значение между рекомпозициями.
  • Неявные зависимости: если читаете State внутри @Composable, Runtime автоматически подписывается на изменения.