Ответ
Scope в DI (Dependency Injection) определяет жизненный цикл объекта, управляемого контейнером. Основные типы:
- Singleton – один экземпляр на всё приложение.
- Activity/ViewModelScope – экземпляр живет, пока живет Activity/ViewModel.
- FragmentScope – привязан к жизненному циклу Fragment.
- CustomScope – пользовательская область видимости.
Пример в Hilt:
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Singleton
fun provideSingletonDep(): MyDep = MyDep()
}
@Module
@InstallIn(ActivityComponent::class)
object ActivityModule {
@ActivityScoped
fun provideActivityDep(): MyDep = MyDep()
}
Неправильное использование scope может привести к утечкам памяти (например, если зависимость ActivityScope переживет саму Activity).