2017-01-24 8 views
-4

私のプロジェクトでDaggerを使用する方法と、それを使用する目的は何ですか?私はGoogleでそれを検索したが、私はそれについて明確ではない。可能であれば、私に最良の解決策と例を与えてください。ダガーとは何ですか?そしてなぜそれを使うの?

+0

ようこそスタックオーバーフロー。残念ながら、あなたの疑問は、私たちのコミュニティに適していると広範にわたることです。 Daggerのドキュメントを読んで、Android開発についての一般的な情報を得ることをお勧めします。 –

+1

あなたがアンドロイドを初めてお使いの場合は、対処する必要がある現実世界の問題は何かを明確にしない限り、まだダガーを使用しないでください。 – Enzokie

答えて

2

多くのAndroidアプリは、しばしば他の依存関係を必要とするインスタンス化オブジェクトに依存しています。たとえば、Retrofitなどのネットワーキングライブラリを使用してTwitter APIクライアントを構築することができます。このライブラリを使用するには、Gsonなどの解析ライブラリを追加する必要があります。さらに、認証やキャッシングを実装するクラスでは、共有プレファレンスやその他の共通ストレージにアクセスする必要があり、最初にインスタンス化し、固有の依存関係チェーンを作成する必要があります。

Dagger 2はこれらの依存関係を分析し、それらを結びつけるのに役立つコードを生成します。他のJava依存性注入フレームワークはありますが、その多くはXMLに頼ることに限界があり、実行時に依存性の問題を検証したり、起動時にパフォーマンスの低下を招いたりする必要がありました。 Dagger 2は、純粋にJava注釈プロセッサーとコンパイル時のチェックを使用して依存関係を分析し検証します。現在までに構築された最も効率的な依存性注入フレームワークの1つと考えられています。

  • 共有インスタンスへのアクセスを簡素化:ここ

    利点

    はダガー2を使用することの他の利点のリストです。 ButterKnifeライブラリでは、ビュー、イベントハンドラ、およびリソースへの参照を簡単に定義できるように、Dagger 2では共有インスタンスへの参照を簡単に取得できます。例えば、一度我々は、MyTwitterApiClient又はSharedPreferencesとしてのシングルトンインスタンスは、我々は簡単@Inject注釈のフィールドを宣言することができダガーに宣言する:

    パブリッククラスMainActivityアクティビティ{

    @Inject MyTwitterApiClient mTwitterApiClient; 
        @Inject SharedPreferences sharedPreferences; 
    
        public void onCreate(Bundle savedInstance) { 
         // assign singleton instances to fields 
         InjectorClass.inject(this); 
        } 
    

    }

  • 延び

    複雑な依存関係を簡単に設定できます。あなたのオブジェクトが作成されることが多い暗黙の順序があります。 Dagger 2は依存グラフを通り抜け、理解しやすく追跡することができるコードを生成します。また、参照を取得して依存関係として他のオブジェクトに渡すために通常は手作業で書く必要がある大量の定型コードを作成する必要がありません。 。また、リファクタリングを簡素化するのに役立ちます。なぜなら、作成する必要のある順序に焦点を当てるのではなく、構築するモジュールに集中できるからです。

  • 簡単なユニットと統合テスト依存グラフは私たちのために作成されているので、ネットワークの応答をしているモジュールを簡単に入れ替えることができます。

  • スコープ済みインスタンスアプリケーションライフサイクル全体で持続可能なインスタンスを簡単に管理できるだけでなく、Dagger 2を活用してより短いライフタイム(つまり、ユーザーセッション、アクティビティライフサイクルなど)を定義することもできます。

関連する問題