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

Как передать контекст в Dagger?

Sobes Copilot

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

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

sobes.tech AI

Через модуль, предоставляющий Context.

@Module
class AppModule(private val context: Context) {

    @Provides
    @Singleton
    fun provideContext(): Context {
        return context
    }

    // Другие provide-методы
}

Затем этот модуль используется при билде компонента:

@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {
    // Инжекты
}

И компонент инициализируется с экземпляром AppModule:

class App : Application() {

    lateinit var appComponent: AppComponent

    override fun onCreate() {
        super.onCreate()
        appComponent = DaggerAppComponent.builder()
            .appModule(AppModule(this)) // Передаем контекст here
            .build()
    }
}

В дальнейшем контекст можно инжектировать в любой класс, который требует его:

class MyService @Inject constructor(private val context: Context) {
    // Используем контекст
}