EventBus的简单使用方法

EventBus的简单使用方法

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 <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
 
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

3.7 Sticky 粘性事件

  • 粘性事件即在事件发布之后再注册,仍然可以订阅到该事件。
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)  
public void onMessageEvent(MessageEvent event) {
    ...
};

4.其他

  • RxBus :基于 RxJava 的事件总线。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值