Android EventBus 使用和 粘性事件解除

EventBus 原理图


前言

EventBus是一种用于Android的发布/订阅事件总线。它有很多优点:简化应用组件间的通信;解耦事件的发送者和接收者;避免复杂和容易出错的依赖和生命周期的问题;很快,专门为高性能优化过等等。

使用

Android Studio 3.0以上

implementation ‘org.greenrobot:eventbus:3.1.1’


第一步,定义事件。事件可以是任意普通的Java对象,没有任何特殊的要求。例如:

new String ("String对象") 或者 你可以新建一个 Bean类

public class MessageBean{

public String msg;


public MeassageBean(String s ){

msg =s;

}

public String getMsg(){

return msg;

}

}

第二,我们再结合EventBus 原理图:

发布者Publisher -> post

EventBus.getDefault().postSticky( Object object);   //发送黏性事件

EventBus.getDefault().post(Object  object); // 发送普通事件

然后事件经过Eventbus 处理 。

第三,订阅事件。订阅者需要定义事件处理方法(也称为订阅者方法)。当发布对应类型的事件时,该方法将被调用。EventBus 3使用@Subscribe注解来定义订阅者方法。方法名可以是任意合法的方法名,参数类型为订阅事件的类型。例如:


  普通订阅
@Subscribe(threadMode = ThreadMode.MAIN)

publicvoidonMessageEvent(Object event) {

...

这里的 Object  event 是对应你 发布者 post的类型


}

//黏性事件的 订阅   

@Subscribe(threadMode = ThreadMode.MAIN, sticky= true)

publicvoidonMessageEvent(Object event) {

  ...

这里的 Object  event 是对应你 发布者 post的类型

}...

第四,在你订阅的Activity 或者 Fragment 类里面 注册

// 注册订阅者

EventBus.getDefault().register(this);

//解除订阅

EventBus.getDefault().unregister(this);

以上你就完成了EventBus 的基本使用

(下次 更 还要记录一下 一个页面多个post  和怎么解除 粘性事件的订阅 )

你可能感兴趣的:(Android EventBus 使用和 粘性事件解除)