Middle+
88
questionbank

Что такое Scope в Dagger и как создать кастомный Scope?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Примеры встроенных Scope: @Singleton, @ActivityScope (часто используется в примерах, но не является частью стандартной библиотеки Dagger).

Для создания кастомного Scope нужно объявить аннотацию с мета-аннотацией @Scope:

java

Затем этот Scope применяется к компоненту и модулям/провайдерам, чьи объекты должны иметь это время жизни:

java
java

Компонент с кастомным Scope создает синглтоны в рамках своего собственного времени жизни. Пока существует экземпляр этого компонента, объекты, помеченные его Scope, будут использоваться повторно. При уничтожении компонента и создании нового, новые экземпляры скоупированных объектов будут созданы снова.