在应用程序中使用两个 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;
}
}