匕首-依赖注入

时间:2018-07-30 15:16:12

标签: android dependency-injection dagger

此解决方案正确吗?还是应该为每个活动创建单独的FragmentBuildersModules?

@Suppress("unused")
@Module
abstract class ActivityModule {

    @ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
    abstract fun contributeMainActivity(): MainActivity

    @ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
    abstract fun contributeLoginActivity(): LoginActivity
}

2 个答案:

答案 0 :(得分:0)

因此,最好为您的活动和片段创建一个单独的模块,然后将其包含在通用模块StringBuilder中(它应该包含所有屏幕模块)

StringBuilder

活动模块:

Screen module

AppModule中包含屏幕模块:

@Module(includes = [
AndroidInjectionModule::class,
RegistrationModule::class,
SecondaryModule::class,
BaseFontActivityModule::class,
SurveyModule::class,
SplashModule::class])

interface ScreenModule {
    @Binds
    fun bindViewModelFactory(factory: ViewModelFactory): ViewModelProvider.Factory
}

答案 1 :(得分:0)

除非活动重用相同的片段,否则它们应依赖于不同的片段模块。造成这种情况的原因有两个:

1)您遵守SOLID的Single Responsibility Principle

2)您的代码仍然易于阅读和重用(例如:如果只需要在另一个项目上重用活动之一,则可以轻松地将其及其依赖关系图移植);

3)您的代码更易于维护(例如:如果将来有人要使用您的代码,他们将立即知道哪些片段属于哪些活动);

4)您的代码不易出错(例如:如果您以某种方式弄乱了片段模块,它只会影响一项活动);

5)可能是我现在不记得的其他原因:)

相关问题