私はダガーを学んでいます。私はちょうど興味があります。私は、フィールド注入を持つことになりますクラスをリストDagger2でコンポーネントの本体を空にすることはできますか?
@Singleton
@Component(modules={AppModule.class, NetModule.class})
public interface NetComponent {
void inject(MainActivity activity);
// void inject(MyFragment fragment);
}
:私はフィールドインジェクションを使用する場合、私はこのような何かを持っていなければならないことを理解しています。
そして、このコンポーネントは他のコンポーネントの親である場合にも、私のような何かを持っている必要があります。
:私はどちらかのいずれかの操作を実行する予定がない場合でも、私はのようなものを持つことができます@Component(modules={ServiceModule.class,
ContextModule.class,
SchedulerModule.class})
@Singleton
public interface SingletonComponent {
Context appContext();
CatTable catTable();
CatDao catDao();
CatMapper catMapper();
CatRepository catRepository();
CatService catService();
Retrofit retrofit();
DatabaseManager databaseManager();
@Named("MAIN") Scheduler mainThreadScheduler();
@Named("BACKGROUND") Scheduler backgroundThreadScheduler();
}
を
@Singleton
@Component(modules = arrayOf(DatabaseModule::class, AppModule::class,
ApiServiceModule::class))
interface AppComponent{
}
ここで本文は空です。
(おそらくフィールドインジェクションや子コンポーネントが必要なことを知っていますが、何も見つからないと確信しています)
子コンポーネントにサブコンポーネントを使用する場合のみ、空の本文を作成できます。これはコンポーネントの依存関係では機能しません(これはサブコンポーネントとほとんど同じです)。 – EpicPandaForce