问题标签 [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.

0 投票
2 回答
759 浏览

android - Koin 在模块之间共享实例

我正在将 Koin 库用于 Android 项目。我想在模块之间共享一些实例,因为它们在整个应用程序中被大量使用。例如:

正如我们从以下模块中看到的那样,两个模块之间的FirebaseFirestore.getInstance()LocalDatabase.getInstance(App.sContext)是相同的。有没有一种方法可以声明让我们说一个moduleC包含FirebaseFirestore.getInstance()和的LocalDatabase.getInstance(App.sContext)然后在 and 上调用moduleAmoduleB

0 投票
1 回答
582 浏览

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

Koin 在模块之间共享实例

但我认为这不是一种干净的方法和依赖注入。

0 投票
1 回答
2378 浏览

android - Koin 的生命周期范围与活动范围。他们是一样的吗?

我正在从https://github.com/InsertKoinIO/koin/blob/master/koin-projects/docs/reference/koin-android/scope.md学习 Koin 的 Scope

如果我有如下 Koin 模块

在我的活动中,我可以这样做

或者我可以使用this.scopewhere thisis MyActivityobject。

我测试它们是一样的。两者是相同的,还是不同的?如果它们不同,它们的区别是什么?

0 投票
1 回答
246 浏览

kotlin - Koin:为什么在 myObject.scope.close() 之后,它仍然有效?

我有一个范围

然后当我得到演示者时,这有效。

同样,当我可以分配一个范围变量时,然后获取演示者。

如果我们关闭它,这仍然可以

但是,如果我分配给另一个范围变量并关闭它,它将失败。

同样,如果我这样做,它也会崩溃

我明白了close(),范围不能再提供presenter了。我就是不明白为什么之后myObject.scope.close()myObject.scope还能提供presenter?(和同一个主持人)

0 投票
1 回答
946 浏览

kotlin - 如何将 scopeId 注入 Koin 以获取依赖项?

https://github.com/InsertKoinIO/koin/blob/master/koin-projects/docs/reference/koin-android/scope.md#sharing-instances-between-components-with-scopes中显示了以下示例

但我什至不知道如何获得presenter

我试试

但这不是正确的。如何得到我的presenter

0 投票
0 回答
294 浏览

android - Koin NoBeanDefFoundException

长话短说,我正面临 NoBeanDefFoundException 奇怪的应用程序崩溃,但它是随机发生的。对于某些设备,它可以按预期工作,而对于其他设备,则只是崩溃。

我有一个包含许多 koin 模块的多模块项目,它按预期工作。但是随着应用程序的增长,我决定对其进行一些重构并使用范围。在项目中,我有 4 种范围:

  • 根(由 Koin 创建)
  • 范围活动
  • 范围流
  • scope_fragment

我使用范围链接来解决父级的依赖关系。例如 scope_fragment -> scope_flow -> scope_activity -> 根。我也部分加载模块。

下面我提供了一段代码,因此您可以获取上下文。

这是我声明模块的方式:

我创建了一个单元测试“checkModules”,但它因 NoBeanDefFoundException 而失败。尝试调试了一下,发现这里的根作用域在_instanceRegistry. 它们是应用程序和上下文。

所以我的问题是如何解决它?可能我以错误的方式使用范围。

0 投票
1 回答
187 浏览

android - 如何使用 Koin 注入 contentResolver

我试图在我的数据源类中注入一个带有 koin 的 contentProvider,但我找不到任何方法可以做到这一点。

这是我的数据源

和我的 koin 模块

我收到了这个错误:

原因:org.koin.core.error.NoBeanDefFoundException:未找到“android.content.ContentResolver”的定义。检查您的模块定义。

0 投票
1 回答
1421 浏览

android - Koin 模块未解决的参考

我有我想在这样的modules课程中注入的所有课程。

我有一个Application看起来像这样的类,它在清单中声明。

我正在使用 Koin 版本 2.1.6

0 投票
1 回答
3564 浏览

android-studio - 没有配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL

koin 在我的大多数相同型号的设备上都可以正常工作,但它会导致具有 IllegalStateException 的单个设备崩溃,我已将 android 上下文作为 applicationContext 但它仍然会导致崩溃。

在更新到最新版本之前,它抛出“由:java.lang.IllegalStateException:KoinApplication 尚未启动”但更新后

我在应用程序类开始 koin:

startKoin { // 声明使用的 Android 上下文 androidContext(this@QairosApplication) // 声明模块 modules(myModule) }

0 投票
1 回答
742 浏览

android - Koin 共享依赖关系范围为嵌套图

我想知道如何使用 Koin 库正确地确定依赖关系的范围。

由于 Google 推荐单一Activity架构AndroidX Navigation 库已成为一个关键库,可通过轻松交换Fragments.

Gradle一个典型的现代 Android 应用程序在包和/或模块中具有多个功能。
这些功能模块提供了一个可以在根图中用作嵌套图的图。(见图)

功能模块的 Koin 范围

应遵守以下规则:

  • 每层代表一个范围。
  • 内层可以注入外层定义的任何东西。
  • 没有重叠的层不应该能够注入彼此的依赖关系。
  • 离开一个层应该处理它的依赖关系。

更具体地说:

  • FeatureA 可以注入 Activity 和 App 依赖项,但不能注入 FeatureB 依赖项
  • FeatureB 可以注入 Activity 和 App 依赖项,但不能注入 FeatureA 依赖项

如何在 Koin 中实现这一点?

请注意,共享依赖项不仅限于 ViewModel。
我应该能够在我的范围内共享任何任意类。