2016-07-13 4 views
1

アプリケーションを拡張するMyApplicationクラスへのアクセス権を持たないAdapterやカスタムオブジェクトなどのクラスで注入を使用したいと考えています。 コンポーネントへのアクセス方法を教えてください。アプリケーションにアクセスできないダガーコンポーネントを取得する

以下のような静的メソッドを使用するのは良いアプローチですか?

public class MyApplication extends Application { 
    private static MyComponent component; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     component = DaggerMyComponent.builder() 
       .appModule(new AppModule(this)) 
       .helperModule(new HelperModule()) 
       .build(); 
    } 

    public static MyComponent getComponent(){return component;} 


} 

答えて

2

この場合、静的オブジェクトを使用するとメモリリークが発生すると思います。 あなたが従うものは、great articleに示されている「すべてを注入する」パターンです。

本質とは何ですか?すでに注入されているオブジェクトの内側にComponentが必要なオブジェクトを注入してください。この記事ではAdapterViewHolder(任意のオブジェクト)がアクティビティ(およびアダプタ内のオブジェクトも)に注入されます。これがあなたが達成しようとしているものです。

Dagger 2の機能に関するこのような偉大な高度なチュートリアルを見たことがないので、Dagger 2に関する記事をすべて読むことをお勧めします。

関連する問題