Назад к вопросам
Яндекс
Junior — Middle
104
На каком уровне ты знаком с принципами и использованием Dagger 2 в Android-разработке?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Dagger 2 — это библиотека для внедрения зависимостей (Dependency Injection) в Android-приложениях, которая позволяет управлять созданием и предоставлением объектов, улучшая модульность и тестируемость кода.
На уровне junior/middle я знаком с основными принципами Dagger 2:
- Использование аннотаций
@Moduleдля определения поставщиков зависимостей. - Аннотация
@Providesвнутри модулей для описания методов, создающих объекты. - Аннотация
@Componentдля связывания модулей и точек внедрения. - Внедрение зависимостей через конструкторы или поля с помощью
@Inject.
Пример простого модуля и компонента:
@Module
class NetworkModule {
@Provides
fun provideHttpClient(): OkHttpClient {
return OkHttpClient.Builder().build()
}
}
@Component(modules = [NetworkModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
class MainActivity : AppCompatActivity() {
@Inject lateinit var client: OkHttpClient
override fun onCreate(savedInstanceState: Bundle?) {
DaggerAppComponent.create().inject(this)
super.onCreate(savedInstanceState)
// теперь client готов к использованию
}
}
Таким образом, Dagger 2 помогает автоматически создавать и предоставлять зависимости, что уменьшает связность компонентов и облегчает поддержку кода.