在应用程序中使用两个 Dagger 组件 class
Using two Dagger components in application class
我正在尝试了解 Dagger2。我遵循了几个例子,使用一个 component/module 是有道理的,但添加第二个让我感到困惑。我是否不能在我的应用程序中使用多个组件 class?
两个 Dagger 组件都突出显示为红色并表示 "Cannot resolve symbol..."
public class MyApplication extends Application {
StorageComponent component;
ImageDownloaderComponent imageDownloaderComponent;
@Override
public void onCreate() {
super.onCreate();
component = DaggerStorageComponent
.builder()
.storageModule(new StorageModule(this))
.build();
imageDownloaderComponent = DaggerImageDownloaderComponent
.builder()
.imageDownloaderModule(new ImageDownloaderModule(this))
.build();
}
public StorageComponent getComponent() {
return component;
}
public ImageDownloaderComponent getImageDownloaderComponent() {
return this.imageDownloaderComponent;
}
}
我最终将两个部分(SharedPrefs 和 Picasso)放在一个模块中,并在我的应用程序中返回组件 class。希望措辞有道理。
@Module
public class StorageModule {
private final MyApplication application;
public StorageModule(MyApplication application) {
this.application = application;
}
@Singleton
@Provides
SharedPreferences provideSharedPreferences() {
return PreferenceManager.getDefaultSharedPreferences(application);
}
@Singleton
@Provides
ImageDownloader provideImageDownloader() {
return new ImageDownloader(application);
}
}
我的应用程序class:
public class MyApplication extends Application {
StorageComponent component;
@Override
public void onCreate() {
super.onCreate();
component = DaggerStorageComponent
.builder()
.storageModule(new StorageModule(this))
.build();
}
public StorageComponent getComponent() {
return component;
}
}
我正在尝试了解 Dagger2。我遵循了几个例子,使用一个 component/module 是有道理的,但添加第二个让我感到困惑。我是否不能在我的应用程序中使用多个组件 class?
两个 Dagger 组件都突出显示为红色并表示 "Cannot resolve symbol..."
public class MyApplication extends Application {
StorageComponent component;
ImageDownloaderComponent imageDownloaderComponent;
@Override
public void onCreate() {
super.onCreate();
component = DaggerStorageComponent
.builder()
.storageModule(new StorageModule(this))
.build();
imageDownloaderComponent = DaggerImageDownloaderComponent
.builder()
.imageDownloaderModule(new ImageDownloaderModule(this))
.build();
}
public StorageComponent getComponent() {
return component;
}
public ImageDownloaderComponent getImageDownloaderComponent() {
return this.imageDownloaderComponent;
}
}
我最终将两个部分(SharedPrefs 和 Picasso)放在一个模块中,并在我的应用程序中返回组件 class。希望措辞有道理。
@Module
public class StorageModule {
private final MyApplication application;
public StorageModule(MyApplication application) {
this.application = application;
}
@Singleton
@Provides
SharedPreferences provideSharedPreferences() {
return PreferenceManager.getDefaultSharedPreferences(application);
}
@Singleton
@Provides
ImageDownloader provideImageDownloader() {
return new ImageDownloader(application);
}
}
我的应用程序class:
public class MyApplication extends Application {
StorageComponent component;
@Override
public void onCreate() {
super.onCreate();
component = DaggerStorageComponent
.builder()
.storageModule(new StorageModule(this))
.build();
}
public StorageComponent getComponent() {
return component;
}
}