在 Android 上启动 Koin
koin-android
项目致力于为 Android 世界提供 Koin 的能力。有关更多详细信息,请参见 Android 设置 部分。
从你的 Application 类
从你的 Application
类中,你可以使用 startKoin
函数并通过 androidContext
注入 Android 上下文,如下所示:
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin {
// 将 Koin 日志记录到 Android logger
androidLogger()
// 引用 Android 上下文
androidContext(this@MainApplication)
// 加载模块
modules(myAppModules)
}
}
}
信息
如果你不想从你的 Application 类启动 Koin,你也可以从任何地方启动 Koin。
如果你需要从另一个 Android 类启动 Koin,你可以使用 startKoin
函数并提供你的 Android Context
实例,就像这样:
startKoin {
//注入 Android 上下文
androidContext(/* your android context */)
// ...
}
额外配置
从你的 Koin 配置(在 startKoin { }
代码块中)中,你还可以配置 Koin 的几个部分。
Koin Android 日志
在你的 KoinApplication
实例中,我们有一个扩展 androidLogger
,它使用 AndroidLogger()
类。此日志记录器是 Koin 日志记录器的 Android 实现。
你可以根据自己的需要更改此日志记录器。
startKoin {
// 使用 Android logger - 默认 Level.INFO
androidLogger()
// ...
}
加载属性
你可以在 assets/koin.properties
文件中使用 Koin 属性来存储键/值:
startKoin {
// ...
// 使用来自 assets/koin.properties 的属性
androidFileProperties()
}
使用 Androidx Startup 启动 Koin (4.0.1) [实验性]
通过使用 Gradle 包 koin-androidx-startup
,我们可以使用 KoinStartup
接口来声明你的 Koin 配置你的 Application 类:
class MainApplication : Application(), KoinStartup {
override fun onKoinStartup() = koinConfiguration {
androidContext(this@MainApplication)
modules(appModule)
}
override fun onCreate() {
super.onCreate()
}
}
这取代了通常在 onCreate
中使用的 startKoin
函数。 koinConfiguration
函数返回一个 KoinConfiguration
实例。
信息
KoinStartup
避免在启动时阻塞主线程,并提供更好的性能。
具有 Koin 的启动依赖项
如果需要设置 Koin 并允许注入依赖项,则可以使你的 Initializer
依赖于 KoinInitializer
:
class CrashTrackerInitializer : Initializer<Unit>, KoinComponent {
private val crashTrackerService: CrashTrackerService by inject()
override fun create(context: Context) {
crashTrackerService.configure(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
return listOf(KoinInitializer::class.java)
}
}