私はイベントバスのlibを使用しようとしていますが、その機能を理解できず、複数の例があります。それはサービスクラスのみを使用するか、アクティビティとフラグメントを使用するか使用アクティビティかアクティビティまたはフラグメントでイベントバスをどのような状況で使用するか。androidのイベントバスライブラリの使い方
答えて
イベントの利点の1つは、オブジェクトを「どこか」に渡すことができ、オブジェクトがどこから取得されたかを知る必要がないことです。これにより、アクティビティやフラグメントの状態をコントローラクラスに簡単にプッシュし、このコントローラから送信されたイベントをアクティビティやフラグメントに戻すことが容易になります。
イベントのために、コントローラは、受信側がアクティビティかフラグメントかを知る必要はありません。これにより、一方のスイッチを他方のスイッチに切り替えることが非常に容易になる。一方、これはコントローラを他の場所に置くことも容易にします。最初にアプリケーションクラスのインスタンスとして持っていて、それをサービスに移動します。
私は上記のように、あなたは、Androidのライフサイクルに対処するためのイベントを使用する方法の非常に具体的な例で記事を書いた:私はちょうど概念を理解https://medium.com/@JuliusHuijnk/beating-the-android-life-cycle-d00a2f3ed88
ありがとうbuddy.oneより多くの質問 - ユーザーからアプリケーションからログアウトすると、イベントバスから値が削除され、イベントバスから値を削除する方法 – Android
インターフェイスの代わりに、単にEventBusを使用できます.weは、あるクラスから1つ以上のクラスにメッセージを渡すことができます。
public static class MessageEvent { /* your getter and setter */ }
は、加入者を準備します:あなたのサブスクライブ方法を宣言し、注釈を付け、必要に応じて指定3でEventBusは
の登録を解除
- ステップスレッドモード:
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) { /* event fire here when you post event from other class or fragment */ };
サブスクライバを登録および登録解除します。 Android上で例えば、活動およびフラグメントは通常、彼らのライフサイクルに応じて登録する必要があります:
@Override public void onStart() { super.onStart(); EventBus.getDefault().register(this);//Register }
登録解除
ポストイベント:
EventBus.getDefault().post(new MessageEvent());//post event
あなたは軽量な通信としてEventBusを考慮することができますアクティビティ、サービス、フラグメント、またはそれらの間のデータを渡すためのチャネル。
EventBusをというアプリケーションの下位層と考えてください。アクティブなアクティビティ、サービス、フラグメント、およびライフサイクルとは関係ありません。
EventBusが働く上でのメインコンセプトは、あなたが活動またはその断片もしくはサービスまたはそのような任意のコンポーネントのいずれかのイベントに加入とEventBusはタイプの特定のイベントを持っている時はいつでもということですを購読すると、は、そのコンポーネントのサブスクライブされたメソッドに通知し、受け取ったイベントに基づいてそこでのタスクを実行できます。イベントのトリガ
が簡単で、あなただけの特定のイベント渡すことによって、あなたのアプリケーションの任意の領域からそれを行うことができますEventBusに(基本的にPOJOクラスですを、のMyEvent
を言わせて)、およびバスの意志残りの部分を処理し、適切な受信機に正しく配送してください。
GreenRobotのEventBus 3を試して、ライブラリのコードを組み込むことをお勧めします。私は問題なく同じものを使用しています。
は、この情報がお役に立てば幸いです。
ほとんどの場合、そうしないでください。一般的には、あなたがあなたのプログラムを誤って設計したときのハックで、あなたのアプリがどのようにカプセル化されているか、どのレベルでどのオブジェクトが知られているかによって、あるポイントから別のポイントへデータを簡単に渡すことができません。実際のスパゲッティコードは、イベントが発生したときに実際に呼び出されるコードを特定することが難しい場合に発生します。イベントバスの周りにコードを書くべきではありません。正しい方法でリファクタリングすることができない場合は、最後の手段にしてください。
私はこれが少し厳しいと思います。 Androidのフレームワークによって、いくつかのやりとりやカップリングが非常に困難になり、EventBusはこれらの欠点を妥当な方法で処理するのに役立ちます。それはあらゆる問題のための適切な解決策ではなく、あなたがその使用法について規律されていない場合は確かに混乱に陥るかもしれませんが、それが受け入れられないということや、あなたのアーキテクチャに欠陥があるという自動信号を意味するわけではありません。私はプロのアプリでEventBusをスパゲッティコードに変えずに使用しました。 – Karakuri
私はその厳しいとは思わない。虐待の割合:イベントバスの実際の必要性は約10:1です。私がコード内のイベントバスを見ると、メンテナンス作業の時間見積もりが2倍になっています。 –
@GabeSechanだから、基本的に、あなたはEventBusesが存在してはならないと言っている。 –
- 1. androidのクラスの使い方
- 2. androidのマスクの使い方
- 3. androidのORMの使い方
- 4. androidのretrofitの使い方
- 5. Androidファイルシステムの使い方は?
- 6. Android | IsolatedProcessの使い方
- 7. Xamarin Android LocalBroadcastManagerの使い方
- 8. Androidタブレットエミュレータの使い方は?
- 9. Android xliffの使い方:g
- 10. android pasteオプションの使い方
- 11. getMaxAmplitudeの使い方 - Android
- 12. Android Fragmentsの使い方は?
- 13. Android 'flavor'の使い方strings.xml
- 14. android:カスタムカラーの使い方は?
- 15. Androidの使い方レイアウトインフレータ
- 16. android exoplayerの使い方
- 17. androidの既存のデータベースの使い方
- 18. AndroidのBitmapクラスのgetPixels()の使用方法と使い方
- 19. android/internal/telephony/Phone.javaのgetAvailableNetworksの使い方
- 20. androidのfinish()メソッドの使い方
- 21. androidのeclipse debugの使い方
- 22. android(ゲーム)のスプライトの使い方
- 23. android 2.XのaddPreferencesFromResourceの使い方は?
- 24. androidのonCheckboxClickedメソッドの使い方
- 25. java classの使い方は? Androidのスタジオ
- 26. カスタムリストのコンテキストメニュー項目の使い方android
- 27. androidのサービスの使い方は?
- 28. android-ndk projectのC++クラスの使い方
- 29. androidのgoogle speech apiの使い方
- 30. android xmlのカスタムフォントの使い方
が、私はあなたがSOチェックすべき – Android
ことを使用している状況いけません[Greenrobot eventBus](http://stackoverflow.com/documentation/android/3551/greenrobot-eventbus#t=201612060424588957703)と[Otto eventbus](http://stackoverflow.com/documentation/android/6068/otto)のドキュメント-event-bus#t = 201612060425047440724)、[こちら](http://www.androidgig.com/eventbus-library-in-android/)リンク –