для инъекций вы должны выполнить следующую процедуру, давайте рассмотрим пример предоставления Retrofit (взяв Kotlin в качестве ссылки) 1. Создайте NetModule (аннотированный @Module)
для создания Retrofit вам может потребоваться предоставить OkHttpClient
@Provides
@Singleton(because we need only one instance through out the application)
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient().Builder().build() (you can also pass other things while building like Interceptor, timeOut check docs for that)
}
теперь предоставляет Retrofit с использованием того же формата, но для создания Retrofit вам нужно передать OkHttpClient в качестве аргумента, который мы предоставили выше.
@Provides
@Singleton
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
return Retrofit.Builder().client(okHttpClient).build()
}
теперь вам нужно создать компонент приложения с аннотацией @Component, предоставиввыше NetModule ()
после компиляции Dagger сгенерирует тот класс компонента, который вы можете использовать для внедрения ваших классов
В вышеприведенном случае предположим, что есть класс MainApplication, где мы создали AppComponent, есть действие, называемое MainActivityкоторый нуждается в экземпляре Retrofit, затем MainActivityComponent добавит зависимости, заявив, что мне также нужен AppComponent, затем вы можете использовать это обновление.
дайте мне знать, что я смог ответить на ваш комментарий или нет:)