EventBusの簡単な使い方


EventBusの簡単な使い方
文書ディレクトリ
  • EventBusの簡単な使い方
  • 1.概要
  • .依存
  • を追加
  • 3.使用概要
  • 3.1イベントクラス(Bean)
  • を定義
  • 93.2イベントを購読する必要がある場所にイベント
  • を登録する
  • 3.3購読イベント
  • 3.4登録イベント購読を即時にキャンセル
  • 3.5リリースイベント
  • 3.6 ProGuard混同
  • 3.7 Sticky粘性事象
  • 4.その他の
  • 1.概要
  • EventBusは、AndroidとJavaの配信/購読のためのイベントバスです.
  • は、コンポーネント間の通信を簡略化する.
  • は、コードをより簡単にします.
  • 快速で小さい(~50 k jar).
  • の高度なプロパティ:スレッドの配布、サブスクリプションの優先度など.

  • 2.依存関係の追加
  • 公式サイト:https://github.com/greenrobot/EventBus
  • implementation 'org.greenrobot:eventbus:3.1.1'
    

    3.使用概要
    3.1イベントクラスを定義する(Bean)
    public static class MessageEvent {
        ...
    }
    

    3.2イベントの購読が必要な場所にイベントを登録する
     @Override
     public void onStart() {
         super.onStart();
         EventBus.getDefault().register(this);
     }
    

    3.3イベントの購読
  • スレッドモデル:
  • POSTING:イベントの処理は、イベントを発行するスレッドで実行される.
  • MAIN:イベントの処理はUIスレッドで実行される.
  • BACKGROUND:イベントをパブリッシュするスレッドがUIスレッドである場合、イベントの処理は新規に開始されたサブスレッドで実行される.パブリッシュイベントのスレッドがサブスレッドである場合、イベントの処理はそのサブスレッドで実行されます.
  • ASYNC:イベントの処理は、新しく開始されたサブスレッドで実行されます.

  • @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(MessageEvent event) {
        ...
    };
    

    3.4登録イベントの購読を即時に取り消す
     @Override
     public void onStop() {
         super.onStop();
         EventBus.getDefault().unregister(this);
     }
    

    3.5イベントの発行
    EventBus.getDefault().post(new MessageEvent());
    

    3.6 ProGuard混同
    -keepattributes *Annotation*
    -keepclassmembers class * {
        @org.greenrobot.eventbus.Subscribe ;
    }
    -keep enum org.greenrobot.eventbus.ThreadMode { *; }
     
    # Only required if you use AsyncExecutor
    -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
        (java.lang.Throwable);
    }
    

    3.7 Sticky粘性イベント
  • スティッキーイベントは、イベントのリリース後に登録され、イベントに購読できます.
  • @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)  
    public void onMessageEvent(MessageEvent event) {
        ...
    };
    

    4.その他
  • RxBus:RxJavaベースのイベントバス.