EventBus的简单使用方法

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 的事件总线。

你可能感兴趣的:(Android学习笔记,#,Android基础知识)