Koin注入框架在Kotlin项目中的使用
2019-09-26 本文已影响0人
则卷滔滔
koin注入架构主要的优点就是简洁,上手容易、使用方便,配合kotlin使用更佳,直接进入主题。
1.项目中引入koin依赖
// Koin for Android
implementation "org.koin:koin-android:2.0.1"
// Koin Android ViewModel features
implementation "org.koin:koin-android-viewmodel:2.0.1"
/ Koin AndroidX Scope features
implementation "org.koin:koin-androidx-scope:2.0.1"
// Koin AndroidX ViewModel features
implementation "org.koin:koin-androidx-viewmodel:2.0.1"
本文不讲解在viewmodel中的使用
2.创建module
object MainModule {
val mainModule = module {
//单利
single {
DbService()
}
//指定注入范围
scope(named<MainActivity>()) {
scoped {
MainPresenter(get(), get())
}
}
}
}
class MainPresenter(var context: Context, var dbService: DbService) : BasePresenter {
fun getData(data: String) {
Toast.makeText(context, dbService.getData(data), Toast.LENGTH_SHORT).show()
}
}
常用有 single: 单利 scope: 范围
3.在Application中初始化
override fun onCreate() {
super.onCreate()
// Start Koin
startKoin {
androidLogger()
androidContext(this@BaseApplication)
modules(MainModule.mainModule) //需要初始化各个模块的module
}
}
4.使用
// lazy inject Koin instance
val mPresenter : MainPresenter by inject()
// or
// eager inject Koin instance
val mPresenter : MainPresenter get()
var mPresenter : T? = null
mPresenter = get()
//or
mPresenter = currentScope.get()
参考资料:
https://github.com/InsertKoinIO/koin
https://beta.insert-koin.io/docs/2.0/documentation/reference/index.html