问题标签 [koin]

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 投票
1 回答
382 浏览

kotlin - Koin 中 Dagger 的 @Named 是什么?

我正在将应用程序从 Dagger2 移动到 Koin 并且需要在 dagger 下进行转换

直到现在:

但我需要在同一个模块中有类似的条目。是一种转换/解决/解决方法吗?

0 投票
1 回答
1419 浏览

android - JobScheduler JobService 在没有应用程序的情况下启动

我们最近将我们的主要应用程序类转换为 Kotlin。
从那以后,我们遇到了崩溃,尤其是在夜间(当我们的应用程序可能被系统杀死时),当我们的 JobService 启动时。

在将类转换为 Kotlin 之前,我们正在以静态方式访问应用程序上下文以获取一些运行良好的依赖项。从那时起,静态 getter 是在应用程序函数 lateinit var中初始化的。onCreate

发布后 Google Play 报告了这些崩溃:

这就引出了一个问题,我们Application.onCreate()还没有被执行吗?

我们稍微重构了 JobService 以减少静态上下文访问的数量,直到需要进行重大重构为止。之后,我们在 Google Play Console 中收到了来自用户的这些崩溃:

这些崩溃告诉我们同样的事情:Application.onCreate()还没有执行,因为 Koin 没有初始化。

所以我的问题?为什么Application.onCreate()转换为 Kotlin 时执行时间会发生变化,或者为什么在 JobService 启动之前不再创建我们的应用程序?

我的意思是,当然,我们可以重构整个应用程序依赖项以使用 JobService 本身提供的上下文,但是如果应用程序是在之后创建的并且我们仍然想使用 Koin 怎么办?我们的应用程序可能会再次崩溃,并带有AlreadyStartetException. 如果我们的应用程序还没有“存在”,那么服务会有什么上下文?

来源(简化):

应用

工作服务

清单注册

搜索状态

0 投票
3 回答
8533 浏览

android - 如何从 Koin lib 修复“找不到类型‘上下文’的兼容定义”?

我刚刚开始在一个为测试准备的 android(替换 Dagger 2)项目中使用 Koin lib。我对模块中的 android 应用程序上下文有疑问:

Koin 在 App 类中启动:

我得到日志:

应用程序崩溃。我在 Koin 的配置中遗漏了什么吗?在目标项目中,我有一些深度依赖于应用程序上下文的模块。而且我不想对这个上下文使用全局引用。

0 投票
2 回答
308 浏览

kotlin - 找不到房间测试数据库实现

我正在测试一个 DAO,为此,我需要使用getAll()生产代码中不存在的方法对其进行扩展。

getAll()我能想到的唯一方法是使用包含我需要的扩展 DAO 来扩展我的数据库实现。代码如下所示:

但是当我运行测试时,我收到以下错误:

我已经检查了其他答案,唯一对我有用的是将Testdatabase类移出测试目录,但我宁愿在我的生产代码中没有测试类。任何想法为什么会发生这种情况以及如何解决它?

0 投票
1 回答
287 浏览

dependency-injection - 如何解决来自特定 koin 模块的变量的依赖关系?

我目前正在使用 Koin v1.0.1,根据文档https://insert-koin.io/docs/1.0/documentation/reference/index.html#_koin_dsl(第 2.11 节),我可以给出一个模块路径:

并使用注入解决特定模块的依赖关系:

但是,我看到注入方法不再接受参数中的模块路径。有人可以帮我解决这个问题。

我还遇到了一种使用 moduleName 属性获取模块名称的简单方法:

但我在 Kotlin 1.2.71 中找不到它。我在这里错过了什么吗?

0 投票
1 回答
1720 浏览

android - 有没有办法将 Koin 注入与泛型一起使用?

我有基类,我想在这个基类上使用 Koin 注入,例如:

我知道有注入 viewModel 的解决方案,但不是简单的注入。那么有没有办法使用泛型类型的 Koin 注入呢?

0 投票
1 回答
563 浏览

android - insert-koin:如何将 MVP 活动视图界面注入演示者?

我是一名 Android 开发人员,我在设计我的应用程序时使用 MVP。我最近得到了 Insert-Koin 的消息,我越用越喜欢它。但是,在将我的应用程序转换为使用 Koin 时,我需要将我的活动视图界面传递给演示者,这是否意味着我也需要注入我的活动?我看过 MVP 示例,但不是很清楚,因为它们没有直接传递活动视图界面,​​而是通过 RxPresenter 对象完成(不知道)。

希望能澄清一下如何向我的演示者注入活动视图界面。

这是示例 MVP 代码中的演示者: https ://github.com/InsertKoinIO/koin/tree/master/koin-projects/examples/android-mvp/src/main/kotlin/fr/ekito/myweatherapp/view/细节

然后是活动:

“视图”实际上分配在哪里?!?

干杯!

0 投票
2 回答
1796 浏览

android - 在 MVP Koin 中注入 Activity 对象

我正在使用 Koin 将 Activity 注入演示者,但现有的 Activity 实例没有传递给演示者。而是创建一个新的。我错过了什么?

0 投票
2 回答
4514 浏览

android - Koin Android 测试

我对 Koin 和“androidTest”有疑问。因为 androidTest 启动应用程序我不需要在测试中自己启动 Koin。

现在我需要注入一个模拟服务。问题是,我在单例类中使用 get() 注入方法内部,这不能通过构造函数注入工作,因为注入的对象可以有不同的实现。

我的想法是用这种方式声明我需要什么:

但这将应用于所有测试。这就是为什么另一个检查是否注入了正确的类的测试失败的原因。

我还尝试在 @After 方法中使用 stopKoin()、startKoin(listOf(appModule)),但是在以后的测试中依赖注入不再起作用。

有没有办法只为一个测试声明模拟?

0 投票
1 回答
4619 浏览

android - Koin - 如何为浓缩咖啡测试提供模拟 ViewModel?

我们如何将模拟的 viewModel 注入到 Activity 中进行 espresso 测试?使用declareMock我在 Test 类中获取模拟对象,但 Activity 接收常规 viewModel 对象。