前言
- Android开发中 EventBus的使用
目录
简介
- 一套 Android / Java 事件订阅 / 发布框架,由greenrobot团队开源,它的出现简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题。
使用方式
引入依赖
eventbus : 'org.greenrobot:eventbus:3.2.0'
|
注册、注销
@Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); }
@Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); }
|
订阅者
@Subscribe(threadMode = ThreadMode.MAIN) public void onUpDateEvent(BaseMessageEvent messageEvent ){ }
|
发布事件
普通事件
EventBus.getDefault().post(new BaseMessageEvent(""))
|
粘性事件
- 黏性事件,就是指发送了该事件之后再订阅者依然能够接收到的事件。使用黏性事件的时候有两个地方需要做些修改。分别在发布和订阅中来使用。
发布
EventBus.getDefault().postSticky(new BaseMessageEvent(""));
|
订阅
@Subscribe(threadMode = ThreadMode.MAIN , sticky = true) public void onUpDateEvent(BaseMessageEvent messageEvent ){ }
|
获取事件
EventBus.getDefault().getStickyEvent(BaseMessageEvent.class);
|
移除事件
EventBus.getDefault().removeStickyEvent(BaseMessageEvent.class);
|
优先级
- 即priority。它用来指定订阅方法的优先级,是一个整数类型的值,默认是0,值越大表示优先级越大。在某个事件被发布出来的时候,优先级较高的订阅方法会首先接受到事件。
- 特别注意:
- 订阅方法,需要与threadMode一致,并且优先级略高
- 优先级不会影响具有不同ThreadModes的订阅者的传递顺序
@Subscribe(threadMode = ThreadMode.POSTING , sticky = true, priority = 1) public void onUpDateEvent(BaseMessageEvent messageEvent ){ }
|
取消事件传递
总结
EventBus基本使用方式就介绍到这里,EventBus源码分析请看:Post not found: EventBus原理分析 EventBus源码分析