Application Component + Module
@Component(modules = {
AndroidInjectionModule.class,
AppModule.class,
ActivityBuilder.class})
public interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance Builder application(Application application);
AppComponent build();
}
void inject(AndroidSampleApp app);
}
@Module
public class AppModule {
@Provides
@Singleton
Context provideContext(Application application) {
return application;
}
}
High-level modules:
- Android Module: Provides all Android related Objects (Resources, AssetManager...)
- Application Module: (Glide, Analytics, Stetho)
- Network Module: (Interceptors, OkHttpClient, Retrofit.....)