Ответ
@Provides используется в Dagger для указания способа создания объекта, когда:
- Объект нельзя создать через
@Inject(например, интерфейсы или сторонние библиотеки). - Требуется кастомизация создания (например, конфигурация Retrofit или OkHttpClient).
- Зависимость требует runtime-аргументов (через
@BindsInstanceили параметры в модуле).
Пример:
@Module
class NetworkModule {
@Provides
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.build()
}
}
⚠️ Если можно использовать @Inject или @Binds (для интерфейсов), лучше выбрать их — код будет чище.