Koin-12-Koin for Android
https://start.insert-koin.io/#/getting-started/koin-for-android
开始
Koin in 5 minutes (5分钟快速入手Koin)
Getting Started (开始)
在Android中开始
在任何一个Android类中:
1 | class MainApplication : Application() { |
如果你不能注入Android上下文或者application,请确保使用 androidContext() 函数在你的Koin应用程序声明。
使用Android Context
在你的定义中,你能通过 androidContext() 和 androidApplication() 函数注入 Context 和 Application :
1 | module { |
Android组件作为Koin组件
Koin对 Activity, Fragment & Service 进行了扩展,以将其视为现成的KoinComponents:
1 | class MyActivity : AppCompatActivity(){ |
这些类能被使用:
get()orby inject()instance retrieving 检索实例getKoin()to access th currentKoininstance 访问当前Koin实例
如果您需要注入来自另一个类的依赖项,并且无法在模块中声明它,则仍然可以使用 KoinComponent 接口对其进行标记。
Extended Scope API
for Android (koin-android-scope or koin-androidx-scope projects)
Scope API更接近Android平台。Activity 和 Fragment 都具有Scope API的扩展:currentScope 获取当前关联的Koin scopr。 此scope已创建并绑定到组件的生命周期。
你能直接使用关联的Koin scope来检索组件:
1 | class DetailActivity : AppCompatActivity(), DetailContract.View { |
很容易来声明你的Android组件scope:
1 | module { |
任何Activity和Fragment都能直接使用scopeAPI: createScope(), getScope() and deleteScope()。
Android ViewModel
(koin-android-viewmodel or koin-androidx-viewmodel projects)
Koin也带来了一些特殊的特性来管理ViewModel:
viewModel特殊的DSL关键来来声明一个ViewModelby viewModel()&getViewModel()注入ViewModel实例(fromActivity&Fragment)by sharedViewModel()&getSharedViewModel()从宿主Activity中复用ViewModel实例(来自Fragment)
让我们在模块中声明一个ViewModel:
1 | val myModule : Module = module { |
在一个Activity中注入它:
1 | class MyActivity : AppCompatActivity(){ |



