我正在创建一个应用程序作为库。必须在其中集成库的主应用程序具有Application类,因此我无法在我的库应用程序中添加Application类。我发现koin必须从Application类开始。我可以从另一个班级叫startKoin吗?
答案 0 :(得分:0)
您可以创建自己的KoinApplication
,它不共享全局koin上下文。您也不需要在Application
类中对此进行初始化。然后可以在您自己的KoinComponent
的实现中使用此实例。
您可以在此处找到详细说明:
https://insert-koin.io/docs/2.0/documentation/reference/index.html#_koin_context_isolation
答案 1 :(得分:0)
如果您的目的是将库依赖项注入到您的应用程序中,则可以让您的库公开可从您的应用程序引用并在启动Koin时进行初始化的模块集。
例如:
在库中,有一个公共模块作为libraryModule:
val libraryModule = module{
single{
ObjectA()
}
}
现在,当您将库包含在应用程序模块中时,您可以将其用作:
class MyApplication : Application{
override fun onCreate() {
super.onCreate()
initializeKoinDI()
}
private fun initializeKoinDI() {
startKoin {
androidContext(this@MyApplication)
modules(listOf(appModule1, appModule2, libraryModule))
}
}
}