Skip to content

Instantly share code, notes, and snippets.

@maomaobug
Last active May 23, 2017 11:14
Show Gist options
  • Save maomaobug/0a092d96d43ae0e8356cbde3081c3450 to your computer and use it in GitHub Desktop.
Save maomaobug/0a092d96d43ae0e8356cbde3081c3450 to your computer and use it in GitHub Desktop.
@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