Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

【Roppongi.aar #1】Activity/FragmentからControllerへ処理を委譲する

2015/09/29(Tue)に開催された Roppongi.aar #1 (http://roppongi-aar.connpass.com/event/19478/) での発表資料です。

  • Als Erste(r) kommentieren

【Roppongi.aar #1】Activity/FragmentからControllerへ処理を委譲する

  1. 1. Activity/Fragment からControllerへ 処理を委譲する Hiroyuki Kusu ( @hkusu_ ) 株式会社ゆめみ 2015/9/29 Roppongi.aar #1
  2. 2. 自己紹介
  3. 3. DroidKaigiで発表の機会を頂きました。 http://www.slideshare.net/hiroyukikusu/droidkaigi2015androidmvc
  4. 4. 作ってます。 https://play.google.com/store/apps/details?id=jp.nailbook
  5. 5. 本題
  6. 6. ・Activity/Fragmentと同様に、ユーザ操作 を受けつけViewを操作するもの (ViewController と呼ぶ方がしっくりくるかも) ・Activity/Fragmentの責務をController に委譲することにより次のメリットがある - Activity/Fragmentをスリムに - Controllerの再利用 ・1つのActivity/Fragmentに対してController は複数あっても良い(意味ある単位で作る) 本スライドにおけるControllerの定義
  7. 7. Activity/ Fragment ControllerControllerController ViewViewView new Viewの操作 Viewの操作 ユーザ操作の 受けつけ ユーザ操作の 受けつけ
  8. 8. 具体的な実装 ※今回は Butter Knife (v7.0.1) を使います。
  9. 9. ※ Fragmentから利用する場合は onCreateView で生成したビュ ー をbindする ⇒ ButterKnife.bind(<Controller>, <ビュー>) @Activity Controllerインスタンスを作成し Butter Knife で Activity を bind
  10. 10. @Activity Activityのライフサイクルと Controllerのライフサイクルを 合わせる
  11. 11. @Controller Viewと変数の関連づけ Activityのライフサイクルと 同名のメソッドを用意して ライフサイクル毎の処理 を記述 各Viewのイベント ※ Controllerは普通のJavaのClass
  12. 12. Butter Knife の ちょっとしたTips
  13. 13. android-apt(https://bitbucket.org/hvisser/android-apt) を導入すると Butter Knife で生成されたコード が確認できたり、@onClickアノテーション等 を付加したメソッドに対するIDEによる警告 (未使用)が出なくなったりする。
  14. 14. (動的に決定される等の理由で)レイアウトに存 在しないかもしれないリソースは @Nullable アノテーションを付加しておくとエラーにな らない(Butter Knife のバージョンによっては @Optional かも)。
  15. 15. プラグインが便利
  16. 16. ほか
  17. 17. ・Dagger等でControllerをDIすると良いかも しれない(未検証) ・Controllerが増えることによりコールバック まわりが複雑になる問題 ⇒ EventBus ですこし楽になる (疎結合になりすぎないよう注意) これらはまたの機会に..
  18. 18. サンプルコードをGitHubに置きました。 https://github.com/hkusu/android-controller-delegate-sample
  19. 19. おわり
  20. 20. 予備スライド
  21. 21. https://github.com/greenrobot/EventBus から転載 EventBus
  22. 22. EventBus イベントクラスは普通のJavaのClassなのでデータ を詰め込める(参照型でも良いがリークに注意) @通知側
  23. 23. メインスレッド外のスレッドで投げたイベントを 簡単にメインスレッドで受け取ることも出来る EventBus 通知側(もしくは購読側)の内部クラスとしてイベントク ラスを作成すればどこから通知される (もしくはどこで 購読される)イベントであるかコード上わかりやすい ※通知と購読の関係が多対多になったら設計を見直す。またイベント を投げ合う関係もきっと良くない @購読側
  24. 24. Activity/ Fragment Controller Activity/FragmentからController 直にControllerクラスのインスタンスを参照する(interfaceを参照しても良 いがやりすぎ感) ControllerからActivity/Fragment ・interfaceで参照しコールバック (複数から利用されうる&抽象化の為) - Activity/Fragmentが死んでるかも&参照が残らないように注意 ・もしくはEventBus - Activity/Fragment ⇔ Controllerが互いを知ってると関係が複雑になる ので一方は通知的で良い - 必要あらば通知を受けてActivity/FragmentからControllerへアクセス

    Als Erste(r) kommentieren

    Loggen Sie sich ein, um Kommentare anzuzeigen.

  • ichigotake

    Oct. 1, 2015
  • sakura_bird1

    Oct. 1, 2015
  • donarudo

    Oct. 6, 2015

2015/09/29(Tue)に開催された Roppongi.aar #1 (http://roppongi-aar.connpass.com/event/19478/) での発表資料です。

Aufrufe

Aufrufe insgesamt

2.457

Auf Slideshare

0

Aus Einbettungen

0

Anzahl der Einbettungen

839

Befehle

Downloads

11

Geteilt

0

Kommentare

0

Likes

3

×