Jetpack Compose Academy · Урок

Пропуск, @Stable и @Immutable

Помечайте типы, чтобы Compose мог пропускать работу.

Урок 2 из 413 шагов

«Пропуск, @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 — локальная установка не требуется.

Все уроки этого курса

  1. Стабильные и нестабильные параметры
  2. Пропуск, @Stable и @Immutable
  3. Отложенное чтение состояния
  4. Инспектор компоновки и счётчики рекомпозиции
← Назад к Jetpack Compose Academy