Last active
May 23, 2017 11:14
-
-
Save maomaobug/0a092d96d43ae0e8356cbde3081c3450 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Singleton | |
// @Component 注解的类即为 Dagger2 的一个 component, | |
// 在注解中要声明包含的Module,后面会解释这些 Module 是怎么被使用到的 | |
@Component(modules = { | |
AppModule.class, | |
NetworkModule.class, | |
DemoApiModule.class | |
}) | |
// Component 必须是接口或者抽象类,Dagger2 框架会为你实现, | |
// Component 有两类抽象方法。↓ | |
public interface AppComponent { | |
// 第一类方法,没有参数,返回值不是 void | |
// 当你调用 appComponent.getRetrofit()的时候,Dagger 会去各个 | |
// Module 中搜索 被 @Provides 注解且返回值类型为 Retorfit 的方法,调用之 | |
Retrofit getRetrofit(); | |
UserManager2 getUserManager(); | |
// 第二类方法,有一个参数,返回值为 void,或者返回类型与参数类型相同(返回原值) | |
// 调用这个方法, BaseFragmentActivity 中 1.被 @Inject 注解的成员变量会被 | |
// 赋值,值来源还是各个 Module, 2. 被 @Inject 注解的方法会被调用只是最常用 | |
// 的依赖注入过程 | |
void inject(BaseFragmentActivity activity); | |
void inject(SomeApplication app); | |
void inject(LauncherActivity activity); | |
// 噢,还有 SubComponent,这里暂不讨论 | |
MainActivityComponent.Builder mainActivityComponentBuilder(); | |
MeComponent.Builder meComponentBuilder(); | |
ProfileComponent.Builder profileComponentBuilder(); | |
ExamLoadingComponent.Builder examLoadingComponentBuilder(); | |
UserComponent.Builder userComponentBuilder(); | |
LoginregisterComponent.Builder loginRegisterComponentBuilder(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment