Android学习笔记|EventBus的简单使用方法

EventBus的简单使用方法 【Android学习笔记|EventBus的简单使用方法】
文章目录

  • EventBus的简单使用方法
    • 1.简介
    • 2.添加依赖
    • 3.使用简介
      • 3.1 定义一个事件类(Bean)
      • 3.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 的事件总线。

    推荐阅读