Ответ
Аннотация @Singleton в Dagger/Hilt помечает класс как синглтон, обеспечивая единственный экземпляр на протяжении всего жизненного цикла компонента (например, ApplicationComponent). Это полезно для тяжелых объектов (например, репозиториев, API-клиентов), которые не должны создаваться многократно.
Пример с Dagger/Hilt:
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
@Provides
fun provideApiService(): ApiService = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.build()
.create(ApiService::class.java)
}
Без аннотации @Singleton каждый инжект создавал бы новый экземпляр. Важно помнить, что синглтон живет в рамках компонента — при уничтожении компонента уничтожается и экземпляр.