Jetpack Compose Academy · Урок

Области действия и время жизни компонентов

Управляйте длительностью жизни зависимостей.

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

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

Что контролирует область действия

Область действия определяет, как долго Hilt хранит один экземпляр и где он используется совместно. Речь идёт о времени жизни, а не только о создании.

По умолчанию область действия не задана

Без аннотации области действия Hilt создаёт новый экземпляр при каждом запросе. Это подходит для недорогих объектов без состояния.

@Provides
fun provideMapper(): Mapper = Mapper() // fresh each time

Компоненты отражают структуру Android

Hilt предоставляет набор компонентов, соответствующих периодам жизни Android — от всего приложения до отдельного представления. Каждый компонент владеет собственными экземплярами.

Для всего приложения с Singleton

SingletonComponent существует столько же, сколько и приложение. Связывания с @Singleton внутри него создаются один раз и используются всеми экранами.

@InstallIn(SingletonComponent::class)

Период жизни одной Activity

ActivityComponent связан с одной Activity. Используйте @ActivityScoped, чтобы совместно использовать экземпляр в этой Activity и создавать его заново для новой Activity.

@ActivityScoped
class FormState @Inject constructor()

Область действия ViewModel

ViewModelComponent соответствует периоду жизни ViewModel. С помощью @ViewModelScoped зависимость используется совместно только внутри этой ViewModel.

@ViewModelScoped
class SessionCache @Inject constructor()

Область действия = аннотация + компонент

Каждая аннотация области действия соответствует одному компоненту. @Singleton используется с SingletonComponent, @ActivityScoped — с ActivityComponent и так далее.

Периоды жизни образуют иерархию

Компоненты вложены друг в друга: Activity находится внутри приложения, а Fragment — внутри Activity. Дочерний компонент может использовать всё, что предоставляют его родители.

Используйте области действия осторожно

Области действия расходуют память, поскольку экземпляр хранится до уничтожения его компонента. Задавайте область действия только для объектов, состояние которых действительно нужно использовать совместно.

Не допускайте утечек из более длительной области действия

Никогда не внедряйте объект с коротким периодом жизни, например Activity, в Singleton. Дольше живущий владелец будет удерживать его и вызовет утечку памяти. ⚠️

Выбор подходящей области действия

Сопоставляйте область действия с периодом жизни данных: конфигурация приложения — в Singleton, состояние экрана — в ViewModelScoped. Правильный выбор предотвращает утечки и лишние затраты.

Быстрая проверка

Вам нужен один общий экземпляр на весь период жизни приложения. Какая область действия подходит?

Итоги: периоды жизни под контролем

Вы узнали, что области действия связывают период жизни экземпляра с компонентом — от Singleton до ViewModel, — поэтому зависимости существуют ровно столько, сколько нужно. 🎯

Можно начать бесплатно

Изучай Kotlin с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

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

Урок «Области действия и время жизни компонентов» бесплатный?

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

Чему я научусь в уроке «Области действия и время жизни компонентов»?

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

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

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

Сколько времени занимает урок «Области действия и время жизни компонентов»?

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

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

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

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

  1. Зачем нужен DI: тестируемый слабосвязанный код
  2. Модули, @Provides и @Binds
  3. hiltViewModel и @HiltViewModel
  4. Области действия и время жизни компонентов
← Назад к Jetpack Compose Academy