Какие знаешь DI фреймворки

Ответ

Dagger 2 - самый популярный DI фреймворк для Android. Он генерирует код во время компиляции, что обеспечивает высокую производительность. Работает на основе аннотаций (@Inject, @Module, @Component).

Пример:

@Component
interface AppComponent {
    fun inject(activity: MainActivity)
}

@Module
class NetworkModule {
    @Provides
    fun provideApiService(): ApiService = Retrofit.create()
}

class MainActivity : AppCompatActivity() {
    @Inject lateinit var apiService: ApiService
    // ...
}

Koin - легковесный DI-фреймворк, использующий DSL Kotlin. Не требует кодогенерации, проще в настройке, но менее производительный.

Пример:

val appModule = module {
    single { ApiService() }
}

class MainActivity : AppCompatActivity() {
    private val apiService: ApiService by inject()
}

Hilt - обертка над Dagger от Google, упрощающая его настройку для Android.