EventBus3.0の簡単な使用

1560 ワード

EventBusの概要
  • EventBusは、図
  • のようなAndroidのパブリッシャ/サブスクライバモードのオープンソースライブラリです.
    EventBus使用シーン(デカップリング)
  • コンポーネント間のインタラクション
  • コールバック使用シーン
  • 放送使用シーン
  • Activity間のインタラクション、ActivityとFragment間のインタラクション、Fragment間のインタラクション、および異なるスレッドの可視インタラクション
  • .
  • 複雑で誤った依存とライフサイクルの問題を回避
  • より高速、特に最大化された利用性能
  • より小さい
  • 特徴:スレッドキー伝達、
  • 特長
  • 注記
  • プライマリ・スレッド転送:UIとのインタラクションが必要な場合、eventはそのスレッドに関係なくプライマリ・スレッドに転送できます.

  • プロジェクトにEventBusを追加
    compile 'org.greenrobot:eventbus:3.0.0'
    

    EventBusの使用、手順:
    1、eventの定義(javaオブジェクトの定義)
    public class MessageEvent {
    
        public final String message;
    
        public MessageEvent(String message) {
            this.message = message;
        }
    }
    

    2、購読者準備
  • eventが発行されると、購読者は
  • に呼び覚まされる.
  • 購読者は登録と登録解除を必要とする
  • 登録(onStart()
    EventBus.getDefault().register(this);
    
  • 登録解除(onStop()
    EventBus.getDefault().unregister(this);
    

  • 3、発表者がeventを発表する
  • は、イベントを任意の場所で発行することができるので、現在登録されている購読者は、イベントタイプに応じてイベントを受信する.
  • リリース
    EventBus.getDefault().post(new MessageEvent("Hello everyone!"));
    
  • 4、購読者はメッセージを受け取る
  • 3.0以上で、パブリッシャーが発行した情報を受信する方法には特定のフォーマットがありません.すなわち、方法の名前は任意に設定できます.
  • パブリッシャがメッセージを発行すると同時に、すべてのサブスクライバがトリガーされ、イベントMessageEventによってサブスクライバが受信する情報
    @Subscribe(threadMode = ThreadMode.MainThread)
    public void helloEventBus(MessageEvent message){
        mText.setText(message.message);
    }
    
  • が区別される