什么是koin?
koin 是一个用于kotlin的实用型轻量级依赖注入框架,采用纯kotlin编写而成,仅使用功能解析,无代理、无代码生成、无反射。
koin 是一个DSL,一个轻便的容易和一个使用的API。
用法
1,添加依赖
// Add Jcenter to your repositories if needed
repositories {
jcenter()
}
dependencies {
// Koin for Android
compile 'org.koin:koin-android:0.9.3'
}
2,声名一个依赖
创建要给仓库来提供一些数据(giveHello())
interface Repository {
fun giveHello()
}class MyRepository() : Repository {
override fun giveHello() = "Hello Koin"
}
创建一个Presenter类来消费数据:
// Use Repository - injected by constructor by Koin
class MyPresenter(val repository : Repository){
fun sayHello() = repository.giveHello()
}
用applicationContext方法来声名一个模块。
// Koin module
val myModule : Module = applicationContext {
provide { MyPresenter(get()) } // get() will resolve Repository instance
provide { MyRepository() as Repository }
}
3,开启Koin
再我们的Application中开启Koin
class MyApplication : Application(){
override fun onCreate() {
super.onCreate()
// Start Koin
startKoin(this, listOf(myModule))
}
}
4,注入依赖
MyPresenter 和Presenter 实例一起创建。为了再Activity中使用,我们通过by inject()来注入它。
class MyActivity : AppCompatActivity(){
// Inject MyPresenter
val presenter : MyPresenter by inject()override fun onCreate() {
super.onCreate()
// Let's use our presenter
Log.i("MyActivity","presenter : ${presenter.sayHello()}")
}
}
by inject()方法允许我们在组件运行时(Activity, fragment, Service...)获取去Koin实例,