Пропуск, @Stable и @Immutable
Помечайте типы, чтобы Compose мог пропускать работу.
«Пропуск, @Stable и @Immutable» — бесплатный урок Jetpack Compose Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Jetpack Compose Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Jetpack Compose Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
When You Need Annotations
Sometimes a type is truly safe but Compose cannot prove it. Annotations let you promise stability so skipping kicks back in.
The @Immutable Promise
@Immutable tells Compose that once an instance is built, none of its properties will ever change. It is the strongest stability guarantee.
@Immutable
data class Theme(val primary: Long, val radius: Int)When to Use @Immutable
Reach for @Immutable on config-like data: themes, styles, and value objects you create once and never mutate after construction.
The @Stable Promise
@Stable is gentler: properties may change, but when they do, Compose will be notified through Compose state. equals() must stay consistent.
@Stable for Observable Types
Use @Stable on classes whose mutable fields are backed by mutableStateOf, so Compose still tracks every change correctly.
@Stable
class FormState { var name by mutableStateOf("") }Break the Promise, Break Compose
These annotations are a contract. If you mark a type stable but mutate it silently, the UI shows stale data and bugs creep in.
Immutable Collection Helpers
Instead of List, pass ImmutableList from kotlinx.collections.immutable. Compose treats it as stable, so list Composables can skip.
fun Tags(items: ImmutableList<String>) { }Functions Stay Stable
Lambda parameters are stable already, but remember a lambda capturing changing values is a new instance each recomposition.
Mark the Whole Class Once
One annotation on the class covers every use of that type as a parameter. You do not annotate at each call site.
Annotations Are Last Resort
Prefer real immutability with val first. Only annotate when the compiler genuinely cannot infer stability on its own.
Verify, Then Trust
After annotating, check that the Composable actually skips. A wrong promise is worse than no promise at all.
Quick Check
Pick the right annotation.
Recap: Promise Wisely
Use @Immutable for never-changing data and @Stable for state-backed mutables. Honor the contract or the UI lies. ✅
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Пропуск, @Stable и @Immutable» бесплатный?
Да — полный текст урока «Пропуск, @Stable и @Immutable» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Jetpack Compose Academy, подпишись на CoddyKit PRO. Курс Jetpack Compose Academy содержит 4 уроков всего.
Чему я научусь в уроке «Пропуск, @Stable и @Immutable»?
Помечайте типы, чтобы Compose мог пропускать работу. Ты практикуешь Jetpack Compose Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Jetpack Compose Academy?
Предыдущий опыт не требуется. Jetpack Compose Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Пропуск, @Stable и @Immutable»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Jetpack Compose Academy?
Да. Каждый урок Jetpack Compose Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стабильные и нестабильные параметры
- Пропуск, @Stable и @Immutable
- Отложенное чтение состояния
- Инспектор компоновки и счётчики рекомпозиции