Ответ
Dagger — это DI-фреймворк для Android. Основные компоненты:
- Модуль (
@Module) — класс, предоставляющий зависимости через методы с@Provides. - Компонент (
@Component) — интерфейс, связывающий модули и инжектирующий зависимости. - Зависимость (
@Inject) — аннотация для полей/конструкторов, куда внедряются объекты. - Область видимости (
@Singletonи др.) — определяет жизненный цикл зависимости.
Пример:
@Module
class AppModule {
@Provides
fun provideApiService(): ApiService = RetrofitApiService()
}
@Component(modules = [AppModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
class MainActivity : AppCompatActivity() {
@Inject lateinit var apiService: ApiService
override fun onCreate() {
DaggerAppComponent.create().inject(this)
}
}