gpt4 book ai didi

android - 单例组件不能依赖作用域组件

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:02 25 4
gpt4 key购买 nike

Android 应用程序上使用 Dagger2 进行依赖注入(inject)时定义 Dagger 组件时出现此错误

Error:(13, 1) error: This @Singleton component cannot depend on scoped components:
@Singleton com.eaxample.app.DaggerAndroid.networkhandler.WebserviceComponent

我的组件代码在这里:

@Singleton
@Component(modules = {WebserviceModule.class}, dependencies = {ApplicationComponent.class})
public interface WebserviceComponent {
WebserviceHelper providesWebserviceHelper();
}

出现错误的组件代码是:

@Singleton
@Component(modules = {RemoteDataModule.class}, dependencies = {WebserviceComponent.class})
public interface RemoteDataSourceComponent {
RemoteDataSource providesRemoteDataSource();
}

为什么会出现此错误以及如何解决?

最佳答案

虽然 dmitriyzaitsev 的回答解释了您收到错误的原因,但您可以通过以下方式解决它:

  1. 定义您自己的范围(它实际上也像单例范围)。例如。名为 RemoteDataScope.java 的文件:

    @Scope
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RemoteDataScope {
    }
  2. 使用新范围,例如@RemoteDataScope 而不是 RemoteDataSourceComponent 中的 @Singleton:

    @RemoteDataScope
    @Component(modules = {RemoteDataModule.class}, dependencies = {WebserviceComponent.class})
    public interface RemoteDataSourceComponent {
    RemoteDataSource providesRemoteDataSource();
    }

关于android - 单例组件不能依赖作用域组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com