0Pricing
Jetpack Compose Academy · Урок

Почему ViewModel переживает поворот экрана

Сохраняйте состояние при изменениях конфигурации.

«Почему ViewModel переживает поворот экрана» — бесплатный урок Jetpack Compose Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Jetpack Compose Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Jetpack Compose Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

The Rotation Problem

Rotate the screen and Android destroys your Activity, wiping any state you stored in it. Your counter, text, and scroll position all vanish. 😵

Configuration Changes

Rotation is one of many configuration changes: theme switches, locale changes, and window resizing all recreate your screen the same way.

Enter the ViewModel

A ViewModel is a class built to hold UI state that outlives the Activity it serves, so a rotation no longer throws your data away.

class CounterViewModel : ViewModel() {
    var count = 0
}

Tied to the Screen, Not the Activity

The ViewModel is scoped to the screen’s lifecycle owner, so the same instance is handed back to the recreated Activity instead of a fresh one.

How It Survives

Android keeps the ViewModel in a retained store across the configuration change, then reconnects it to your brand-new Activity automatically.

When It Is Cleared

A ViewModel lives until the screen is truly finished. When the user navigates away for good, onCleared() runs so you can release resources.

override fun onCleared() {
    // cancel jobs, close streams
}

Not for Everything

The ViewModel survives rotation but not process death. For that, pair it with SavedStateHandle so critical values can be restored later.

Add the Dependency

You get ViewModel support from the lifecycle libraries. Add the lifecycle-viewmodel-compose artifact so Compose can obtain one easily.

implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0")

Separation of Concerns

Beyond survival, a ViewModel keeps logic out of your UI. Your Composables stay focused on drawing while the ViewModel owns the state.

A Mental Model

Think of the ViewModel as a quiet backstage manager: the Activity comes and goes, but the manager keeps your show’s state ready to perform again.

Why This Matters

Surviving rotation means users never lose progress mid-task. That reliability is the foundation every robust Compose app is built on. ✨

Quick Check

Test your grasp of why a ViewModel outlives a rotation.

Recap

Rotation recreates your Activity, but a ViewModel survives configuration changes and reattaches, keeping UI state intact and logic out of the UI.

Часто задаваемые вопросы

Урок «Почему ViewModel переживает поворот экрана» бесплатный?

Да — полный текст урока «Почему ViewModel переживает поворот экрана» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Jetpack Compose Academy, подпишись на CoddyKit PRO. Курс Jetpack Compose Academy содержит 4 уроков всего.

Чему я научусь в уроке «Почему ViewModel переживает поворот экрана»?

Сохраняйте состояние при изменениях конфигурации. Ты практикуешь Jetpack Compose Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Jetpack Compose Academy?

Предыдущий опыт не требуется. Jetpack Compose Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Почему ViewModel переживает поворот экрана»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Jetpack Compose Academy?

Да. Каждый урок Jetpack Compose Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Почему ViewModel переживает поворот экрана
  2. viewModel() в Composable
  3. Моделирование класса данных UiState
  4. collectAsStateWithLifecycle
← Назад к Jetpack Compose Academy