Назад к вопросам
Middle+
72
questionbank

Какие готовые компоненты с определенным скоупом доступны в Dagger Hilt, и как можно добавить модуль к этой компоненте?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Dagger Hilt доступны следующие готовые компоненты с определенным скоупом:

  • SingletonComponent с @Singleton скоупом. Привязан к жизненному циклу Application.
  • ActivityRetainedComponent с @ActivityRetainedScoped скоупом. Привязан к жизненному циклу активити, но сохраняется при смене конфигурации.
  • ActivityComponent с @ActivityScoped скоупом. Привязан к жизненному циклу активити.
  • FragmentComponent с @FragmentScoped скоупом. Привязан к жизненному циклу фрагмента.
  • ViewComponent с @ViewScoped скоупом. Привязан к жизненному циклу View.
  • ViewModelComponent с @ViewModelScoped скоупом. Привязан к жизненному циклу ViewModel.
  • ServiceComponent с @ServiceScoped скоупом. Привязан к жизненному циклу Service.

Чтобы добавить модуль к одной из этих компонент, используется аннотация @InstallIn:

@Module
@InstallIn(SingletonComponent::class) // Указываем компонент, к которому привязываем модуль
object AppModule {

    @Provides
    @Singleton // Скоуп должен соответствовать скоупу компонента
    fun provideMyDependency(): MyDependency {
        return MyDependency()
    }
}

Здесь AppModule устанавливается в SingletonComponent, что означает, что объекты, предоставляемые этим модулем, такие как MyDependency, будут иметь @Singleton скоуп.