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 — локальная установка не требуется.
Все уроки этого курса
- Почему ViewModel переживает поворот экрана
- viewModel() в Composable
- Моделирование класса данных UiState
- collectAsStateWithLifecycle