Koin快速入门——Android

本教程可以让你使用Koin框架写一个可以注入和调用你的组件的Android应用

框架引入

首先,将Kotlin的Android依赖在Gradle文件中引入如下:

// Add Jcenter to your repositories if needed
repositories {
    jcenter()    
}
dependencies {
    // Koin for Android
    compile "org.koin:koin-android:$koin_version"
}

我们的接口

让我们创建一个HelloRepository来提供一些数据:

interface HelloRepository {
    fun giveHello(): String
}

class HelloRepositoryImpl() : HelloRepository {
    override fun giveHello() = "Hello Koin"
}

让我们创建一个presenter类来使用这些数据:

class MySimplePresenter(val repo: HelloRepository) {

    fun sayHello() = "${repo.giveHello()} from $this"
}

实现Koin模块

module函数声明模块。让我们定义第一个组件:

val appModule = module {

    // single instance of HelloRepository
    single<HelloRepository> { HelloRepositoryImpl() }

    // Simple Presenter Factory
    factory { MySimplePresenter(get()) }
}

?> 我们用factory关键字声明MySimplePresenter类,在每次Activity需要时生成一个新的实例。

启动Koin

有了module以后,就可以用Koin启动它。打开或者创建你的自定义的Application类(别忘了在mainfest.xml文件中声明),调用startKoin()函数:

class MyApplication : Application(){
    override fun onCreate() {
        super.onCreate()
        // Start Koin
        startKoin{
            androidLogger()
            androidContext(this@MyApplication)
            modules(appModule)
        }
    }
}

依赖注入

MySimplePresenter组件会和HelloRepository实例一起创建。要在Activity里面获取,需要使用by inject()在Activity里注入:

class MySimpleActivity : AppCompatActivity() {

    // Lazy injected MySimplePresenter
    val firstPresenter: MySimplePresenter by inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        //...
    }
}

提示

by inject():这个函数可以让我们在Activity,Fragment,Service...里获得Koin实例。
get():这个函数是不通过懒加载的方式,直接获得实例。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容