注入したいクラスがいくつかあります。たとえば、エンドポイントから JSON をダウンロードしてデータベースに保存するために使用するAPIContentLoaderクラスがあります。データベースへの読み書き用に作成したDatabaseManagerクラスをAPIContentLoaderに注入したいと思います。DatabaseManagerをこのクラスに注入するには、最初にApplicationContextへの参照が必要ですよね?
これが私が今セットアップしている方法です:
public class APIContentLoader{
@Inject DatabaseManager dbm;
@Inject BaseApplication app;
public APIContentLoader(){
app.getAppComponent().inject(this);
// dbm now is ready for use
}
... // rest of class stuff
}
私のBaseApplicationクラスは、標準の Application クラスを拡張します。この方法でこのクラスへのBaseApplication参照を挿入することは悪い習慣ですか? ApplicationContext への静的参照を作成することは、これらの非アクティビティ クラスで使用できるようにするための良い方法ではないことはわかっています。
大きな問題は、このアプローチは、静的参照と同じ問題を、メモリ管理やこれらのヘルパー クラスの存続期間の永続化と同じように提示するかどうかということだと思います。