Sobes.tech
Назад к вопросам
Junior — Middle
72

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

Компании, где спрашивали
ООО Возрождение

Ответ от нейросети

sobes.tech AI

В Dagger Scope используется для управления временем жизни и областью видимости создаваемых зависимостей. Аннотация Scope позволяет ограничить создание объекта одним экземпляром в рамках определённого жизненного цикла.

Например, если у вас есть скоуп @Singleton, то объект с этим скоупом будет создан один раз на весь жизненный цикл компонента (обычно приложения). Если скоупом является, например, @ActivityScope, то объект будет создан один раз на время жизни Activity.

Механизм работы:

  • Скоупы связываются с компонентами Dagger.
  • При запросе зависимости с определённым скоупом Dagger проверяет, есть ли уже созданный экземпляр в этом скоупе.
  • Если есть — возвращает его, если нет — создаёт новый и сохраняет для повторного использования.

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

Пример:

@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class ActivityScope

@ActivityScope
@Component(modules = [SomeModule::class])
interface ActivityComponent {
    fun inject(activity: SomeActivity)
}

Здесь все зависимости с аннотацией @ActivityScope будут жить столько же, сколько и компонент ActivityComponent.