Back to questions
Альфа-Банк
Ozon Fresh
Junior — Middle
94
Можете объяснить, что подразумевается под областью действия (scope) в контексте Dependency Injection фреймворков?
Companies where asked
Answer from AI
sobes.tech AI
Область действия (scope) в контексте Dependency Injection (DI) фреймворков определяет время жизни и видимость создаваемых зависимостей (объектов).
В Android, например, при использовании DI (Dagger, Hilt) scope помогает контролировать, сколько и когда создаются экземпляры классов:
- Singleton scope — объект создаётся один раз на всё время работы приложения.
- Activity scope — объект живёт в пределах одной Activity, создаётся при её создании и уничтожается вместе с ней.
- Fragment scope — объект живёт в пределах одного Fragment.
Это важно для управления ресурсами и правильного разделения состояний. Например, если у вас есть объект, который должен сохранять состояние только в рамках одной Activity, его нужно пометить соответствующим scope, чтобы при переходе между Activity создавался новый экземпляр.
Пример с Hilt:
@InstallIn(ActivityComponent::class)
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class ActivityScope
@ActivityScope
class UserRepository @Inject constructor() {
// ...
}
Здесь UserRepository будет создан один раз на каждую Activity, в которой он внедряется.