Loong-T / Android-Showcase

A showcase of Android development skills
Apache License 2.0
2 stars 0 forks source link

Dagger.Android 请教 #2

Closed xiaobailong24 closed 7 years ago

xiaobailong24 commented 7 years ago

您好,看到您的博客上的文章: http://nerd-is.in/2017/07/09/dagger-android——Android-中使用-Dagger2-的新方法/ 有个问题请教一下:

  1. MainActivityModule 需要在 AppComponent 中依赖吧,但是文章中并没有提?
  2. 如果一个Android project 有多个 Module(不是dagger的module),比如一个是library module,一个是app module。Dagger 的 AppComponent 在 library module中,然后在app module中有一个dagger的MainActivityModule 想依赖 AppComponent 应该怎么做比较好呢?

感谢指导!

Loong-T commented 7 years ago

@xiaobailong24

  1. 是的,MainActivityModule 需要在 AppComponent 中添加依赖。这是我的疏漏,等下会修改。

  2. 我还没有遇到过这种场景。按照我的理解,应该是 MainActivityModule 对应的 Component 中添加 dependencies。例如叫 MainActivityComponent,就是 MainActivityComponent(dependencies = {AppComponent.class})

xiaobailong24 commented 7 years ago

@Loong-T 感谢您的回答。 但是dagger.android 推荐使用 @Subcomponent, 而 @Subcomponent 是没有 dependencies 属性的。 dependencies 是 @Component 的属性,但是如果使用 @Component 就没法使用 AndroidInjector.Builder 了。 望查证!

Loong-T commented 7 years ago

@xiaobailong24 明白你的意思了。

就我的观点来说,我不支持复用 Component。举例来说,假如 lib 里的 Component 发生了变化,可能会暴露出过多的依赖。而且在 SubComponent 的场景下也的确是不方便复用的。

如果要复用,至少也该是复用 Module,在 app 里再重新写一个 Component。

我觉得更好的做法是 Component 和 Module 都重新写,这样能使 lib 的变化尽量少地影响到 app 本身。而且可以更方便地分离主代码和测试代码的依赖。

xiaobailong24 commented 7 years ago

@Loong-T 感谢指导。你说得有道理,这个问题下午我已经解决啦,就是你这个思路。