0Pricing
Jetpack Compose Academy · Урок

collectAsStateWithLifecycle

Безопасно наблюдайте состояние ViewModel в Compose.

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

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

Observing a Flow in Compose

Your ViewModel exposes state as a Flow, and your Composable needs to turn that stream into a value Compose can read and react to.

The Lifecycle-Aware Way

Use collectAsStateWithLifecycle() to collect a StateFlow into Compose state while respecting the screen’s lifecycle. 🔋

val ui by vm.state.collectAsStateWithLifecycle()

Why Not collectAsState

Plain collectAsState() keeps collecting even when the app is in the background, wasting work. The lifecycle version pauses instead.

Stops in the Background

When your screen stops, collection stops too; when it returns to the foreground, collection resumes, saving battery and avoiding pointless updates.

Reading the Result

The call returns a State you read with by, giving you a normal value that triggers recomposition whenever the flow emits.

val ui by vm.state.collectAsStateWithLifecycle()
Text(ui.title)

Add the Dependency

This helper lives in a runtime artifact. Add lifecycle-runtime-compose so the function is available in your Composables.

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

Choosing the Min State

By default collection is active while at least STARTED. You can lower the threshold, but STARTED is the safe, recommended choice.

Pairs With StateFlow

It shines with StateFlow, which always holds a current value, so your screen has something to show the instant it appears.

Branch on the State

Once collected, branch on the UiState to render loading, success, or error, all driven by the latest emission from your ViewModel.

if (ui.isLoading) Spinner() else Content(ui.items)

Safer Than Manual Collection

It frees you from manually starting and cancelling collection. The helper ties the work to composition and lifecycle for you. ✨

The Modern Default

For new Compose screens, collectAsStateWithLifecycle() is the recommended way to observe ViewModel state safely and efficiently.

Quick Check

Check why the lifecycle-aware collector is preferred.

Recap

Observe ViewModel state with collectAsStateWithLifecycle(): it collects a StateFlow into Compose state, pauses in the background, and is the modern default.

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

Урок «collectAsStateWithLifecycle» бесплатный?

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

Чему я научусь в уроке «collectAsStateWithLifecycle»?

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

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

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

Сколько времени занимает урок «collectAsStateWithLifecycle»?

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

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

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

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

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