【发布时间】:2019-06-23 04:34:30
【问题描述】:
我正在将 Koin 库用于 Android 项目。 我想在模块之间共享一些实例,因为它们在整个应用程序中被大量使用。 例如:
val moduleA = module {
scope(named<FragmentA>()) {
scoped { FirebaseFirestore.getInstance() }
scoped { LocalDatabase.getInstance(App.sContext) }
scoped { NetworkDataSourceA(get()) }
}
}
val moduleB = module {
scope(named<FragmentB>()) {
scoped { FirebaseFirestore.getInstance() }
scoped { LocalDatabase.getInstance(App.sContext) }
scoped { NetworkDataSourceB(get()) }
}
}
从以下模块中我们可以看到,FirebaseFirestore.getInstance() 和 LocalDatabase.getInstance(App.sContext) 在两个模块之间是相同的。
有没有办法让我声明一个包含FirebaseFirestore.getInstance() 和LocalDatabase.getInstance(App.sContext) 的moduleC,然后在moduleA 和moduleB 上调用它?
【问题讨论】:
-
是的,您可以通过创建和关闭范围来做到这一点。您能否添加 FragmentA 或 FragmentB 代码。以便我可以根据您的代码添加我的答案。
标签: android dependencies code-injection koin koin-scope