我刚刚开始使用Dagger 2,我在网上发现了数千个指南,每个指南都有不同的实现,现在我有点困惑.所以基本上这就是我现在写的:
AppModule.java:
@Module
public class AppModule {
Application mApplication;
public AppModule(Application application) {
mApplication = application;
}
@Provides
@Singleton
Application providesApplication() {
return mApplication;
}
}
Run Code Online (Sandbox Code Playgroud)
DataModule.java:
@Module
public class DataModule {
private static final String BASE_URL = "http://beta.fridgewizard.com:9001/api/";
@Provides
@Singleton
NetworkService provideNetworkService() {
return new NetworkService(BASE_URL);
}
@Provides
@Singleton
SharedPreferences provideSharedPreferences(Application app) {
return PreferenceManager.getDefaultSharedPreferences(app);
}
}
Run Code Online (Sandbox Code Playgroud)
PrefsModel.java:
@Module(includes = DataModule.class)
public class PrefsModel {
@Provides
@Singleton
QueryPreferences provideQuery(SharedPreferences prefs) {
return new QueryPreferences(prefs);
}
}
Run Code Online (Sandbox Code Playgroud)
AppComponent.java(我暴露了QueryPreferences对象,因为我需要在演示者中使用它,希望以这种方式正确):
@Singleton …Run Code Online (Sandbox Code Playgroud)