匕首新 API。但无法使用单例作用域实现运行时作用域



我的范围:

@Scope
@Retention
annotation class ActivityScope

应用模块:

 @Module(includes = [ActivityModule::class])
class AppModule {
    @Provides
    @Singleton
    fun provideContext(application: Application): Context {
        return application
    }
    @Provides
    @Singleton
    internal fun provideDataManager(appDataManager: AppDataManager): DataManager {
        return appDataManager
    }

}

用例活动模块 :

@Module
    class UsecaseActivityModule {
        @Provides
        @RegisterActivityScope
        fun provideUsecase(appDataManager: AppDataManager): UseCase =
            UseCase(appDataManager)
    }

@Module
internal abstract class ActivityModule {

    @ContributesAndroidInjector(
        modules = [
            UsecaseActivityModule::class
        ]
    )
    internal abstract fun contributeUsecaseActivity(): UsecaseActivity
}

问题是我无法提供这个:

@Provides
        @Singleton
        fun provideContext(application: Application): Context {
            return application
        }

出现错误

错误:(无作用域(可能不引用作用域绑定:@Subcomponent(

 bla bla bla ...   

AppComponent.java:6:error: com.example.di.AppComponent 的作用域为 @Singleton不得引用具有不同 范围: @dagger。Component(modules = {dagger.android.AndroidInjectionModule.class, com.example.di.ActivityModule.class, com.example.di.AppModule.class}(

我做错了什么?

我没有在父模块中指定范围@RegisterActivityScope。

    @Module
    internal abstract class ActivityModule {
        @RegisterActivityScope // <-- just need add this
        @ContributesAndroidInjector(
            modules = [
                UsecaseActivityModule::class
            ]
        )
        internal abstract fun contributeUsecaseActivity(): UsecaseActivity
    }

最新更新