Какие знаешь фазы у Compose

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

Ответ

Compose проходит через несколько ключевых фаз для определения и рендеринга UI:

  1. Composition – построение дерева UI из Composable-функций. Compose определяет, что нужно отобразить.
  2. Layout – измерение и позиционирование элементов. Каждый элемент вычисляет свои размеры и координаты.
  3. Drawing – отрисовка элементов на Canvas.

Дополнительно есть фазы:

  • Recomposition – пересмотр Composition при изменении state.
  • Invalidation – пометка части UI для пересчета.

Пример с Layout:

Box(modifier = Modifier.layout { measurable, constraints ->
    val placeable = measurable.measure(constraints)
    layout(placeable.width, placeable.height) {
        placeable.place(0, 0)
    }
})