Что такое Stable-аннотация

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

Ответ

Stable-аннотация (@Stable) в Jetpack Compose используется для оптимизации рекомпозиций. Она указывает, что значение или тип стабильны — их equals всегда возвращает одинаковый результат для одних и тех же входных данных. Это позволяет Compose пропускать рекомпозиции, если входные данные не изменились.

Пример:

@Stable
data class User(val name: String, val age: Int)

@Composable
fun UserProfile(user: User) {
    Text(text = "${user.name}, ${user.age}") // Рекомпозиция пропускается, если user не изменился
}

Без @Stable Compose считает тип нестабильным и может выполнять лишние рекомпозиции. Аннотация особенно полезна для сложных типов или интерфейсов.