【发布时间】:2018-07-16 09:48:10
【问题描述】:
我想作为单例注入到一个类中,但 Dagger 将其他实例注入到 Kotlin 文件而不是 Java 文件。 为什么会这样?
【问题讨论】:
-
你可能忘记了
apply plugin: 'kotlin-kapt'
标签: android kotlin singleton dagger-2
我想作为单例注入到一个类中,但 Dagger 将其他实例注入到 Kotlin 文件而不是 Java 文件。 为什么会这样?
【问题讨论】:
apply plugin: 'kotlin-kapt'
标签: android kotlin singleton dagger-2
您没有提供代码,因此很难给出完整的答案。但是,我的猜测是您正在创建 2 个不同的组件实例,一个在 Kotlin 中,一个在 Java 中。 但是,只有当您始终重用相同的组件时,Dagger 才能“保证”单个实例。如果您创建了两个不同的组件实例,一个在 Kotlin 中,一个在 Java 中,它将无法重用您的“单例”模块的同一个实例。
这背后的原因是,在生成组件时,Dagger 会在您第一次调用它时插入一些逻辑来创建模块的新实例,然后在您想要获取的所有后续时间中返回“缓存”实例相同的模块。
【讨论】: