Сколько будут жить объекты, помеченные Scope в Dagger

«Сколько будут жить объекты, помеченные Scope в Dagger» — вопрос из категории DI, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

  • @Singleton — живет, пока существует ApplicationComponent (обычно весь жизненный цикл приложения).
  • @ActivityScope — живет, пока активна Activity (уничтожается при onDestroy()).
  • @FragmentScope — живет, пока существует Fragment (уничтожается при onDestroy()).

Пример:

@Module
class AppModule {
    @Singleton
    @Provides
    fun provideHeavyDependency(): HeavyDependency = HeavyDependency()
}

Здесь HeavyDependency будет существовать, пока живет ApplicationComponent.