К какому scope привязан Singleton

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

Ответ

Singleton привязан к scope приложения (Application scope). Это означает, что экземпляр Singleton существует на протяжении всего жизненного цикла приложения.

В Android это обычно реализуется через:

  • Application класс (удерживая инстанс в статическом поле)
  • DI-библиотеки (например, Dagger/Hilt с аннотацией @Singleton)

Пример:

class App : Application() {
    companion object {
        lateinit var instance: App
            private set
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
    }
}

// Использование
val appContext = App.instance

Важно: Singleton не привязан к Activity/Fragment scope — его инстанс переживает их уничтожение.