Dagger 2 - 为啥我收到循环引用错误?

Posted

技术标签:

【中文标题】Dagger 2 - 为啥我收到循环引用错误?【英文标题】:Dagger 2 - Why am I getting circular reference error?Dagger 2 - 为什么我收到循环引用错误? 【发布时间】:2021-10-17 02:39:54 【问题描述】:

我有一个已经工作的匕首实现。我的 android Application 类是初始化 Dagger2 实现的类。

但是,当我添加一个使用 Activity 参数的方法时,我得到了匕首错误:

error: [ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.

我测试了不同的变体,只有在我使用 Activity 参数时才会抛出错误:

class MyApplication: Application() 

    ...

    fun addingThisFunWorks()

    fun addingThisFunReturningSomethingWorks(): ReturnClass

    fun addingThisFunWithParameterWorks(value: Int)

    fun addingThisFunThrowsDaggerError(activity: Activity)


是不是因为 Activity 类依赖于 Application 类并且不知何故变成了循环?

【问题讨论】:

您创建的自定义类必须具有“包”前缀。有吗? @SalihCan 你说的是 Dagger 还是 kotlin?我没有在这里放置***包声明,因为它似乎与问题无关。 我的回答与您的问题无关。我对此链接中答案的评论解决了我的类似问题。 ***.com/a/68796142/13109852 并解决了除我之外的 3 个人的问题。 【参考方案1】:

问题是这个类中的 Activity 和 Fragment 引用不知何故被解释为循环引用。

要修复它,我需要创建一个具有我需要的功能的“中级”管理器。

例如:

class MyApplication: Application() 

    ...

    fun addingThisFunWorks()

    fun addingThisFunReturningSomethingWorks(): ReturnClass

    fun addingThisFunWithParameterWorks(value: Int)

    fun returnMyManager(): MyManager


还有:

class MyManager 
    fun addingThisFunThrowsDaggerError(activity: Activity)

【讨论】:

以上是关于Dagger 2 - 为啥我收到循环引用错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥iOS的Masonry中的self不会循环引用

由于循环依赖错误,无法添加对项目的引用

如何在仍然使用 Dagger2 的同时解决循环依赖?

打破 Dagger 中的循环依赖

为啥这个循环不起作用?

为啥我在使用 javascript 自动完成时在 Eclipse 中收到消息:“未处理的事件循环异常 Java 堆空间”?