Как долго живет зависимость помеченная аннотацией Singleton в Dagger

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

Ответ

Зависимость с аннотацией @Singleton живет в течение всего жизненного цикла компонента, в котором она объявлена. Обычно это ApplicationComponent (или SingletonComponent в Dagger Hilt), поэтому объект создается один раз и существует до завершения работы приложения.

Пример:

@Module
@InstallIn(SingletonComponent::class)
object AppModule {
    @Singleton
    @Provides
    fun provideSomeService(): SomeService = SomeServiceImpl()
}

Важно: если компонент пересоздается (например, в тестах), Singleton-зависимость также пересоздается. В Android это актуально только при перезапуске процесса приложения.