EventBus的简单使用
2016-09-06 19:23
309 查看
一、概述
EventBus是GreenRobot出品的Android系统的一个Event Bus类库,主要是用来简化应用组件之间的通信。EventBus框架原理流程图
Publisher:发布者, 通过post()方法将消息事件Event发布到事件总线
EventBus:事件总线
Subscriber:订阅者, 收到事件总线发来的消息。即onEvent方法被执行。注意参数类型必须和发布者发布的参数一致。
二、下载EventBus
Gradle:compile 'org.greenrobot:eventbus:3.0.0'
三、使用(3 steps)
1.定义事件(自定义类,比如)public class MessageEvent { /* 添加需要的字段 */ }
2.添加订阅者
// onCreate()进行注册 EventBus.getDefault().register(this);
// 需要添加注解 // 接收消息 @Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(MessageEvent event) {/* 处理事件event... */};
// 在onDestory()进行解除注册 EventBus.getDefault().unregister(this);
3.发布事件
EventBus.getDefault().post(event);
四、进阶(Sticky Events)
***粘性事件*** 在事件发送的时候,并没有直接的订阅者,当注册订阅者的时候,我们可以获取以前发送事件
1.定义事件(自定义类,比如)
public class MessageEvent { /* 添加需要的字段 */ }
2.添加订阅者
@Override public void onStart() { super.onStart(); // onStart()进行注册 EventBus.getDefault().register(this); }
// 接收消息 @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEvent(MessageEvent event) { // 必须在主线程更新UI textField.setText(event.message); }
@Override public void onStop() { // 在onStop()进行解除注册 EventBus.getDefault().unregister(this); super.onStop(); }
3.发布sticky事件
EventBus.getDefault().postSticky(new MessageEvent("Hello everyone!"));
4.如果不需要事件,进行移除
MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class); if(stickyEvent != null) { EventBus.getDefault().removeStickyEvent(stickyEvent); }
相关文章推荐
- EventBus 《二》 Android EventBus的简单使用
- Android框架之EventBus的简单使用
- Eventbus简单使用
- EventBus的简单使用
- 简单使用RxBus替代EventBus
- EventBus简单使用
- EventBus的简单使用
- EventBus简单使用
- EventBus的简单使用
- EventBus的简单使用
- 传递消息--第三方开源--EventBus的简单使用
- Eventbus简单使用
- EventBus使用的简单介绍
- EventBus简单使用
- EventBus的简单使用
- eventbus简单使用
- 传递消息--第三方开源--EventBus的简单使用
- EventBus简单使用教程
- EventBus 3.0 简单使用
- EventBus使用简单小结和在比喻中理解不同订阅模式