Ответ
Объект Scope в Dagger создаётся с помощью аннотации @Scope. Она определяет время жизни зависимостей внутри графа компонента.
Пример:
@Scope
@Retention(AnnotationRetention.RUNTIME)
annotation class MyCustomScope
Затем компонент помечается этой аннотацией, чтобы ограничить время жизни зависимостей:
@MyCustomScope
@Component
interface MyComponent {
fun inject(activity: MainActivity)
}
Привязка зависимостей к скоупу:
@Module
class MyModule {
@MyCustomScope
@Provides
fun provideDependency(): MyDependency = MyDependency()
}
Ключевые моменты:
- Scope не создаёт объекты, а только управляет их временем жизни
- Для каждого скоупа создаётся отдельный экземпляр зависимости
- Стандартные скоупы:
@Singleton,@ActivityScope,@FragmentScopeи т.д.