在项目中使用 Koin
Koin框架,适用于使用Kotlin开发 ,是一款轻量级的依赖注入框架,无代理,无代码生成,无反射。
相对于dagger 而言更加适合Kotlin语言。
如果要在项目中使用 Koin,需要在项目中添加 Koin 的依赖,我们只需要在 App 模块中的 build.gradle 文件中添加以下代码。
1 2 3 4 5 6 7 8 9
| // Koin for Kotlin implementation "org.koin:koin-core:$koin_version" implementation "org.koin:koin-core-ext:$koin_version"
// Koin for AndroidX依赖注入 implementation "org.koin:koin-androidx-scope:$koin_version" implementation "org.koin:koin-androidx-viewmodel:$koin_version" implementation "org.koin:koin-androidx-fragment:$koin_version" implementation "org.koin:koin-androidx-ext:$koin_version"
|
如果需要在项目中使用 Koin 进行依赖注入,需要在 Application 或者其他的地方进行初始化。
1 2 3 4 5 6 7 8 9 10 11
| class KoinApplication : Application() {
override fun onCreate() { super.onCreate() startKoin { AndroidLogger(Level.DEBUG) androidContext(this@KoinApplication) modules(appModule) } } }
|
koin注入,很简单,只需要几行代码就可以完成。
1 2 3 4 5 6 7 8 9 10
| val moduleHome = module { single { RetrofitManager.initRetrofit().getService(HomeService::class.java) } single { HomeRepo(get()) } viewModel { HomeViewModel(get()) }
}
|
然后在application中添加
1 2
| // 添加所有需要在 Application 中进行初始化的 module val appModule = listOf(repoModule)
|
总结
1 2
| 因为 Koin 基于 kotlin 基础上进行开发的,使用了 kotlin 强大的语法糖(例如 Inline、Reified 等等)和函数式编程,所以Koin 不需要用到反射, 因为在 Koin 中不需要使用注解,也不需要 kapt,这意味着没有额外的代码生成,所有的代码都是 Kotlin 原始代码,Koin 仅使用功能解析,无额外代码生成。
|