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  和怎么解除 粘性事件的订阅 )

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。Even...
    Mr丶sorrow阅读 15,004评论 0 13
  • 项目到了一定阶段会出现一种甜蜜的负担:业务的不断发展与人员的流动性越来越大,代码维护与测试回归流程越来越繁琐。这个...
    fdacc6a1e764阅读 3,210评论 0 6
  • 先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就...
    Ten_Minutes阅读 582评论 0 2
  • EventBus基本使用 EventBus基于观察者模式的Android事件分发总线。 从这个图可以看出,Even...
    顾氏名清明阅读 635评论 0 1
  • 一 出去谈事情,餐桌上会遇到不少由白酒改喝红酒的人。 这些人以五十岁左右的居多,年纪大了,高度数的白酒吃不消再喝,...
    吃酒ChiJiu阅读 1,716评论 0 2