私のプロジェクトでDaggerを使用する方法と、それを使用する目的は何ですか?私はGoogleでそれを検索したが、私はそれについて明確ではない。可能であれば、私に最良の解決策と例を与えてください。ダガーとは何ですか?そしてなぜそれを使うの?
答えて
多くの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を活用してより短いライフタイム(つまり、ユーザーセッション、アクティビティライフサイクルなど)を定義することもできます。
- 1. コルドバテレメトリ、それは何で、なぜそれを使うのですか?
- 2. C#のフィールドとは何ですか?なぜそれを使うのですか?
- 3. virtualenvとは何ですか、なぜそれを使うべきですか?
- 4. ダイナミックプロキシクラスとは何ですか、なぜそれを使用するのですか?
- 5. GWT.createは何を意味し、なぜそれを使うべきですか?
- 6. イベントソースとは何ですか?なぜそれはそう呼ばれるのですか?
- 7. コンポーザーとは? composer.jsonとcomposer.pharとは何ですか?そして、composer.jsonの使い方と、なぜそれを使うのか?
- 8. JAXBとは何故、なぜそれを使用するのですか?
- 9. GLEWは何をして、なぜそれが必要なのですか?
- 10. devise_parameter_sanitizer.sanitize()メソッドとは何ですか?そして、それはdevise_parameter_sanitizer.for()メソッドとどう違うのですか?
- 11. 以下はなぜそれが何をするのですか?
- 12. LLVMとは何ですか?それはなぜそんなに人気が高いのですか?
- 13. AF_INETとは何ですか、なぜそれが必要なのですか?
- 14. msbuildタスクとは何ですか?また、いつ、そしてなぜあなたはそれらを使用することを選択しますか?
- 15. Pythonで+ = meanとは何ですか?なぜ私はそれを使うべきですか?
- 16. 最初にそれをブール値として扱うのはなぜですか?
- 17. GeneratedMethodAccessor1,2などとは何ですか?なぜそれらが見つからないのでしょうか?
- 18. JavascriptのメソッドCollectGarbage()とは何ですか?いつ、なぜそれを使うべきですか?
- 19. Spark on Windows - winutilsとは何か、なぜそれが必要なのですか?
- 20. なぜ、それはしてはいけないのですか?
- 21. 「データビズ」は何ですか?私はそれを使用しようとすると、
- 22. 「ストリング・バッシング」とは何ですか?それはなぜ悪いですか?
- 23. 「ノード」はADTですか?もしそうなら、そのインターフェースは何ですか?
- 24. HttpClientとは何ですか?そしてどうやってそれを手に入れますか?
- 25. clojure.lang.Var.getRawRootとは何ですか、なぜそれが呼び出されますか?
- 26. Visual Studio 2008の「ブラウザファイル」とは何ですか、なぜそれが必要なのでしょうか?
- 27. 何が違法だと思いますか?とguiceはなぜそれを使用していますか?
- 28. Javaのint.classには何が入っていますか?それはなぜ有効なのでしょうか?
- 29. あなたはJavaでこのオブジェクトを何と呼びますか?そしてなぜそれを使用しますか?
- 30. Liquibase Producerとは何ですか?それはなぜ使用されていますか?
ようこそスタックオーバーフロー。残念ながら、あなたの疑問は、私たちのコミュニティに適していると広範にわたることです。 Daggerのドキュメントを読んで、Android開発についての一般的な情報を得ることをお勧めします。 –
あなたがアンドロイドを初めてお使いの場合は、対処する必要がある現実世界の問題は何かを明確にしない限り、まだダガーを使用しないでください。 – Enzokie