- 専用Callback
- Activity/ParentFragmentでCallback Interface実装
- FragmentでCallbackの登録
- onAttachでActivityをCallback Interfaceにキャストして登録
- getParentFragmenでCallback Interfaceにキャストして登録
- Fragment側で親を意識しなければならない!!
- 個々のCallback Interfaceの設計と実装
- 複数のFragmentの数だけCallbackが必要!!
- タイプセーフティ?
- 汎用Callback
- Activity/ParentFragmentでCallback Interface実装
- FragmentでCallbackの登録
- onAttachでActivityをCallback Interfaceにキャストして登録
- getParentFragmenでCallback Interfaceにキャストして登録
- Fragment側で親を意識しなければならない!!
- Callback Interfaceの実装は一つ
- 汎用化の為、Bundleにオブジェクト格納
- どのFragmentからのCallbackであるか識別が必要!!
- Bundleからキー指定してイベント通知内容を取得
- LocalBroadcastManager
- Activity/ParentFragmentでIntentFilterを指定してレシーバーを登録
- FragmentからIntentをブロードキャスト
- 汎用化の為、IntentのBundleにオブジェクト格納
- どのFragmentからのCallbackであるか識別が必要!!
- Bundleからキー指定してイベント通知内容を取得
- 必ずMainスレッドメッセージの送受信
- Event Bus (Otto)
- Activity/ParentFragmentでBusを登録
- FragmentでBusを登録
- Activity/ParentFragmentでSubscribeメソッド実装
- FragmentでProduceメソッドを実装
- ProduceとSubscribeのインターフェースはPOJOのEventオブジェクト
- Eventオブジェクトなのでタイプセーフティ
- デフォルトではMainスレッド以外ではメッセージ送信(Produce)は出来ない。
- Busインスタンス作成時にThreadEnforcer.ANYを指定すれば、他のスレッドからメッセージ送信できる。
- しかし、Subscribeメソッドがメッセージ送信時スレッドで実行されてしまいスレッド管理が煩雑
- runOnUiThread でMainスレッドで実行させる仕組みが必要
- 何処のクラスからでもメッセージ送信(Produce)で来てしまうので、煩雑化する。
- DialogFragmentのAlertDialogのOnClickCallbackからActivityに通知できる...
- 意図しない箇所でSubscribeされる。
android - LocalBroadcastManager vs using callbacks - Stack Overflow http://stackoverflow.com/questions/13948720/localbroadcastmanager-vs-using-callbacks
Otto square.github.io/otto/
Does Otto use weak references to store objects passed to register()?
https://plus.google.com/101050435280754106754/posts/PGygiXURaTW
EventBus - torutkの日記 http://d.hatena.ne.jp/torutk/20110407/p1
0 件のコメント:
コメントを投稿