Какой опыт работы с DI

«Какой опыт работы с DI» — вопрос из категории DI, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал с Dagger 2, Hilt и Koin.

Dagger 2:

  • Настраивал компоненты, модули, скоупы.
  • Использовал @Inject, @Provides, @Binds.
  • Оптимизировал граф зависимостей, избегая циклических зависимостей.

Hilt:

  • Упрощал внедрение зависимостей в Android-приложения.
  • Работал с @HiltAndroidApp, @AndroidEntryPoint, @ViewModelInject.

Koin:

  • Быстро прототипировал проекты с single, factory, viewModel.

Пример с Hilt:

@Module
@InstallIn(SingletonComponent::class)
class NetworkModule {  
    @Provides  
    fun provideRetrofit(): Retrofit = Retrofit.Builder()  
        .baseUrl("https://api.example.com")  
        .build()  
}  

@AndroidEntryPoint  
class MainActivity : AppCompatActivity() {  
    @Inject lateinit var retrofit: Retrofit  
}  

Предпочитаю Hilt за простоту интеграции с Android.