EventBus的简单使用
来源:互联网 发布:淘宝优惠券公众号排名 编辑:程序博客网 时间:2024/05/17 07:46
一、概述
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 public void onEvent(MessageEvent event) {/* 处理事件event... */};
// 在onDestory()进行解除注册EventBus.getDefault().unregister(this);
3.发布事件
eventBus.getDefault().post(event);
四、进阶(Sticky Events)
***粘性事件*** 在事件发送的时候,并没有直接的订阅者,当注册订阅者的时候,我们可以获取以前发送事件
1.定义事件(自定义类,比如)
public class MessageEvent { /* 添加需要的字段 */ }
2.添加订阅者
@Overridepublic 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);}
@Overridepublic 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);}
0 0
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus 的简单使用
- EventBus的简单使用
- EventBus的简单使用
- EventBus 《二》 Android EventBus的简单使用
- EventBus框架的简单使用
- Android EventBus的简单使用
- EventBus使用的简单介绍
- EventBus最简单的使用
- Android EventBus的简单使用
- ubuntu如何判断一个文件是32还是64位的
- 在linux实现密码输入不回显
- uva 11374(Dijkstra + 枚举)
- LeetCode 1 - Two Sum
- 自定义标签
- EventBus的简单使用
- Splay Tree(伸展树)
- MySQL基本语法
- Android Studio导出Jar文件
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- shell 命令结果无法处理
- AngularJS(二)
- ThreadLocal工作原理
- java mail 通过 freemarker 发送邮件