如何解决Dagger2-自定义作用域-无法使用使用作用域的Dagger 2 Android创建除AppComponent之外的其他组件
我的应用程序中有应用程序组件。我想创建另一个具有不同范围的组件,并将该组件与应用程序组件链接。
当用户登录到应用程序时,我必须构建另一个组件。
下面是我的ApplicationComponent
类代码:
@Singleton
@Component(
dependencies = [RoomComponent::class],modules = [
ApplicationModule::class,AndroidInjectionModule::class,SubViewModelModule::class,LogRoomModule::class,WelcomeActivityModule::class]
)
interface ApplicationComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): ApplicationComponent
}
fun inject(application: Application)
fun roomComponent():RoomComponent
}
下面是我的RoomComponent
类代码
@RoomScope
@Component(
modules = [
ViewModelModule::class,RoomModule::class,HomeActivityModule::class,AppAssistedInjectModule::class,WorkerBindingModule::class
]
)
interface RoomComponent {
fun factory(): AppWorkerFactory
fun inject(application: Application)
}
因为应用程序组件在SingletonScope下,而Room组件在RoomScope下。因此,我无法链接它。
一旦用户登录到应用程序,我必须构建Room Component,在Application类中,我必须构建Application Component类。
我在“应用程序组件”和“房间组件”下有共同的类,但我没有知道必须为它们使用哪个范围。
我正在Application类中构建Application组件,如下所示:
daggerComponent = DaggerApplicationComponent.builder().application(this).build()
ApplicationInjector.init(this) { application ->
daggerComponent?.inject(application)
}
我必须按如下所示在HomeActivity中构建RoomComponent:
daggerComponent = DaggerRoomComponent.builder().application(this).build()
ApplicationInjector.init(application) { application ->
daggerComponent?.inject(application)
}
我尝试将RoomComponent设为SubComponent,在RoomComponent中添加依赖项,但没有任何效果。任何帮助都会对我有很大帮助。
预先感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。