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 currentKoin
instance 访问当前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(){ |