Ответ
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.