问题标签 [koin-scope]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Koin 在模块之间共享实例
我正在将 Koin 库用于 Android 项目。我想在模块之间共享一些实例,因为它们在整个应用程序中被大量使用。例如:
正如我们从以下模块中看到的那样,两个模块之间的FirebaseFirestore.getInstance()
和LocalDatabase.getInstance(App.sContext)
是相同的。有没有一种方法可以声明让我们说一个moduleC
包含FirebaseFirestore.getInstance()
和的LocalDatabase.getInstance(App.sContext)
然后在 and 上调用moduleA
它moduleB
?
android - 具有嵌套范围或子组件概念的 Koin 2.0
有没有办法在 Koin 上实现 Dagger 的 SubCompoent 概念?
我想做的事情是使用父范围的实例。
app_modules.kt
使用 Dagger,这可以通过 SubComponent 或 Component Dependency 来完成。
但是在 Koin(尤其是 2.0)中,我找不到路。
有人回答说 use
GlobalContext.get().koin.getScope("Parent").get<>()
。
https://github.com/InsertKoinIO/koin/issues/513
但我认为这不是一种干净的方法和依赖注入。
android - Koin 的生命周期范围与活动范围。他们是一样的吗?
如果我有如下 Koin 模块
在我的活动中,我可以这样做
或者我可以使用this.scope
where this
is MyActivity
object。
我测试它们是一样的。两者是相同的,还是不同的?如果它们不同,它们的区别是什么?
kotlin - Koin:为什么在 myObject.scope.close() 之后,它仍然有效?
我有一个范围
然后当我得到演示者时,这有效。
同样,当我可以分配一个范围变量时,然后获取演示者。
如果我们关闭它,这仍然可以
但是,如果我分配给另一个范围变量并关闭它,它将失败。
同样,如果我这样做,它也会崩溃
我明白了close()
,范围不能再提供presenter
了。我就是不明白为什么之后myObject.scope.close()
,myObject.scope
还能提供presenter?(和同一个主持人)
kotlin - 如何将 scopeId 注入 Koin 以获取依赖项?
但我什至不知道如何获得presenter
?
我试试
但这不是正确的。如何得到我的presenter
?
android - Koin NoBeanDefFoundException
长话短说,我正面临 NoBeanDefFoundException 奇怪的应用程序崩溃,但它是随机发生的。对于某些设备,它可以按预期工作,而对于其他设备,则只是崩溃。
我有一个包含许多 koin 模块的多模块项目,它按预期工作。但是随着应用程序的增长,我决定对其进行一些重构并使用范围。在项目中,我有 4 种范围:
- 根(由 Koin 创建)
- 范围活动
- 范围流
- scope_fragment
我使用范围链接来解决父级的依赖关系。例如 scope_fragment -> scope_flow -> scope_activity -> 根。我也部分加载模块。
下面我提供了一段代码,因此您可以获取上下文。
这是我声明模块的方式:
我创建了一个单元测试“checkModules”,但它因 NoBeanDefFoundException 而失败。尝试调试了一下,发现这里的根作用域在_instanceRegistry
. 它们是应用程序和上下文。
所以我的问题是如何解决它?可能我以错误的方式使用范围。
android - 如何使用 Koin 注入 contentResolver
我试图在我的数据源类中注入一个带有 koin 的 contentProvider,但我找不到任何方法可以做到这一点。
这是我的数据源
和我的 koin 模块
我收到了这个错误:
原因:org.koin.core.error.NoBeanDefFoundException:未找到“android.content.ContentResolver”的定义。检查您的模块定义。
android - Koin 模块未解决的参考
我有我想在这样的modules
课程中注入的所有课程。
我有一个Application
看起来像这样的类,它在清单中声明。
我正在使用 Koin 版本 2.1.6
android-studio - 没有配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL
koin 在我的大多数相同型号的设备上都可以正常工作,但它会导致具有 IllegalStateException 的单个设备崩溃,我已将 android 上下文作为 applicationContext 但它仍然会导致崩溃。
在更新到最新版本之前,它抛出“由:java.lang.IllegalStateException:KoinApplication 尚未启动”但更新后
我在应用程序类开始 koin:
startKoin { // 声明使用的 Android 上下文 androidContext(this@QairosApplication) // 声明模块 modules(myModule) }
android - Koin 共享依赖关系范围为嵌套图
我想知道如何使用 Koin 库正确地确定依赖关系的范围。
由于 Google 推荐单一Activity
架构,AndroidX Navigation 库已成为一个关键库,可通过轻松交换Fragment
s.
Gradle
一个典型的现代 Android 应用程序在包和/或模块中具有多个功能。
这些功能模块提供了一个可以在根图中用作嵌套图的图。(见图)
应遵守以下规则:
- 每层代表一个范围。
- 内层可以注入外层定义的任何东西。
- 没有重叠的层不应该能够注入彼此的依赖关系。
- 离开一个层应该处理它的依赖关系。
更具体地说:
- FeatureA 可以注入 Activity 和 App 依赖项,但不能注入 FeatureB 依赖项
- FeatureB 可以注入 Activity 和 App 依赖项,但不能注入 FeatureA 依赖项
如何在 Koin 中实现这一点?
请注意,共享依赖项不仅限于 ViewModel。
我应该能够在我的范围内共享任何任意类。