问题描述
我的应用程序中有应用程序组件。我想创建另一个具有不同范围的组件,并将该组件与应用程序组件链接。
下面是我的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 (将#修改为@)