Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Flow, Mortar and Dagger 2 のTIPS

9,336 views

Published on

Flow, Mortar and Dagger 2 のTIPS

Published in: Technology
  • Be the first to comment

Flow, Mortar and Dagger 2 のTIPS

  1. 1. Dagger2のTIPS フリーランス 武藤大樹 (@__tai2__) Flow, Mortar and Photo by Brenda Clarke(CC BY 2.0) https://flic.kr/p/6njqAc
  2. 2. メリット • Fragmentのライフサイクル問題が軽減される(No IllegalStateException!!!) • Flow: View主体の画面遷移、必要なデータはコンストラクタ に渡して遷移すればOK • Mortar: Context#getSystemServiceの拡張、Viewの永続化 がBundleでできるようになる • Dagger(2): コンポーネント間の疎結合、フィールドの先頭に @Injectと付けとけば勝手に初期化されるのでスッキリする
  3. 3. Dagger 2 (Daggerとの違い) • ランタイムリフレクション一切なし • ビルド前にアノテーションからソースコード生成
  4. 4. 階層毎のScope • オブジェクトグラフを階層化可能(階層毎にScopeアノテーショ ンが必要) • 画面毎に異なるオブジェクトグラフを構築。 • @Singleton(Applicationレベル)と@PerScreen(画面レベル)の2 階層 @Singleton @PerScreen
  5. 5. オブジェクトグラフの検索 • @WithComponent: 画面(Path)に対応するオブジェクトグラフ を指定する • @WithComponent,@Component,@Moduleからクラスをラン タイムリフレクションで検索して、オブジェクトグラフを生成 • オブジェクトグラフ間の依存関係はハードコーディング
  6. 6. Proguard -keep @dagger.Component public class *
 -keep @dagger.Module public class * { *; }
 -keep class net.tai2.flowmortardagger2demo.**Dagger** { *; }
  7. 7. サンプルコード https://github.com/tai2/flowmortardagger2demo (TODOアプリ)

×