【发布时间】:2016-06-20 12:13:29
【问题描述】:
我正在尝试在我的项目中使用 Dagger 2 以及 Retrofit、RxJava、MVP 实现。然而,我是从阅读指南和观看视频开始的,就在我以为我理解它是如何工作的时候,似乎我没有。 Here 是我试图理解的示例。
模块:
@Module
public class AppModule {
private App app;
public AppModule(App app) {
this.app = app;
}
@Provides @Singleton public SharedPreferences provideSharedPreferences() {
return PreferenceManager.getDefaultSharedPreferences(app);
}
@Provides @Singleton public HelloModel provideHelloModel(SchedulerProvider schedulerProvider,
HelloDiskCache helloDiskCache, HelloService helloService, Clock clock) {
return new HelloModel(schedulerProvider, helloDiskCache, helloService, clock);
}
@Provides public HelloDiskCache provideHelloDiskCache(SharedPreferences prefs) {
return new HelloDiskCache(prefs);
}
@Provides public HelloService provideHelloService() {
return new HelloService();
}
@Provides public SchedulerProvider provideSchedulerProvider() {
return SchedulerProvider.DEFAULT;
}
@Provides public Clock provideClock() {
return Clock.REAL;
}
@Provides @Nullable public LayoutInflaterFactory provideLayoutInflaterFactory() {
return null;
}
组件
@Component(
modules = AppModule.class
)
@Singleton
public interface AppComponent {
HelloModel getHelloModel();
HelloDiskCache getHelloDiskCache();
MainActivity inject(MainActivity activity);
HelloFragment inject(HelloFragment fragment);
}
在片段中,注入了presenter(这是从哪里来的?)
@Inject HelloPresenter presenter;
并且在presenter中,有一个构造函数注入
@Inject HelloPresenter(HelloModel helloModel) {
this.model = helloModel;
}
那么,为什么我们可以在 Fragment 中注入 Presenter,为什么我们可以在 Presenter 中注入呢?答案不必很详细,我只是觉得很愚蠢,因为我无法追踪它的来源。
【问题讨论】:
标签: java android dependency-injection rx-java dagger-2