https://start.insert-koin.io/#/quickstart/android

开始

Koin in 5 minutes (5分钟快速入手Koin)

Getting Started (开始)

在Android application中使用

这个教程将会告诉你如何使用Koin注入和检索组件来编写一个Android/Kotlin application。

Get the code

可以直接在Github上查看项目或者下载zip

🚀 Go to Github or download Zip

配置Gradle

通过如下方式添加 Koin Android 的依赖:

1
2
3
4
5
6
7
8
// Add Jcenter to your repositories if needed
repositories {
jcenter()
}
dependencies {
// Koin for Android
compile "org.koin:koin-android:$koin_version"
}

组件

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

1
2
3
4
5
6
7
interface HelloRepository {
fun giveHello(): String
}

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

在创建一个presenter类来消费这个数据:

1
2
3
class MySimplePresenter(val repo: HelloRepository) {
fun sayHello() = "${repo.giveHello()} from $this"
}

编写Koin Module

使用 module 函数来声明一个module,让我们来声明我们的第一个组件:

1
2
3
4
5
6
7
8
val appModule = module {

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

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

我们将我们的 MySimplePresenter 类声明为一个 factory 来让每当我们的Activity需要一个时就创建一个新的对象。

开始使用Koin

现在我们已经有了一个module,我们就可以使用Koin了。打开你的Application类,或者创建一个(不要忘了在你的Manifest.xml中声明它)。然后只需要调用 startKoin() 函数:

1
2
3
4
5
6
7
8
9
10
11
class MyApplication : Application(){
override fun onCreate() {
super.onCreate()
// Start Koin
startKoin{
androidLogger()
androidContext(this@MyApplication)
modules(appModule)
}
}
}

注入依赖

MySimplePresenter 组件将会被通过 HelloRepository 实例所创建。为了在我们的Activity中获取到它,就需要使用 by inject() 委托注入器来注入它:

1
2
3
4
5
6
7
8
9
10
11
class MySimpleActivity : AppCompatActivity() {

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

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

//...
}
}

by inject() 函数允许我们在Android组件(Activity, fragment, Service…)运行时再来检索Koin实例。

get() 函数在这可以非延迟的直接检索一个实例。