暴雨夜初探EventBus使用方法
2016-06-06 21:46
483 查看
不同于合肥绵延不断的梅雨让人心生反感,天水的天气总是有些暴烈,晴则艳阳高照,雨则酣畅淋漓,这一点我喜欢,这不现在外面正在雷声大作,风摇树起,雨如瓢泼。是夜我独处房间回顾EventBus的使用方法。
前期使用了EventBus,但一段时间不用,今天打开竟然不知道如何使用,看了忘性总比记性大,还是要记下来,以便以后使用,言归正传!
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
直接记录使用步骤:
1、源码:https://github.com/greenrobot/EventBus,在这里下载jar包。
2、将jar包放在工程的libs文件夹下。
3、创建事件类,这个类可以是一个空类,也可以通过构造函数向在事件发布者和接受者之间传递信息。
如上所示,这就是一个事件类,并且在发布者与接收者之间传递参数shareAdress。
4、在消息的发送端要做几个事情:
1)定义消息
3)在需要的时候发送消息,比如下面的例子中是在用户点击事件的处理函数中发布消息。在这个例子中发消息的同时还带过去了一个参数,用来传递信息。
5、在消息的接收端要做几件事:
1)定义消息
4)添加消息处理函数
在这里,有几个事件就要加几个消息处理函数,都是onEvent函数,只是函数里面的参数是你想传进来的消息类。
另外说明下,在一个activity中可以处理多个事件,这时只需要注册一次就行了,处理多个事件仅仅是增加onEvent函数的问题。这一点需要注意。
完成以上步骤你会发现用回调、handler等方法时需要复杂的理论和绕弯的代码,就这样简单地被实现了,是不是很神奇,感谢开发者的努力,让我等使用者的工作变得简单、高效。
另另外,EventBus只能用在同进程内的消息传递,不能跨进程,如果要跨进程进行通信,用广播比较好一点。
本篇仅仅是初步入门,后续再深入研究。
前期使用了EventBus,但一段时间不用,今天打开竟然不知道如何使用,看了忘性总比记性大,还是要记下来,以便以后使用,言归正传!
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
直接记录使用步骤:
1、源码:https://github.com/greenrobot/EventBus,在这里下载jar包。
2、将jar包放在工程的libs文件夹下。
3、创建事件类,这个类可以是一个空类,也可以通过构造函数向在事件发布者和接受者之间传递信息。
public class SubmitEvent { String shareAdress; /** * @return the shareAdress */ public String getShareAdress() { return shareAdress; } /** * @param shareAdress the shareAdress to set */ public void setShareAdress(String shareAdress) { this.shareAdress = shareAdress; } public SubmitEvent(String shareAdress) { this.shareAdress = shareAdress; } }
如上所示,这就是一个事件类,并且在发布者与接收者之间传递参数shareAdress。
4、在消息的发送端要做几个事情:
1)定义消息
EventBus systemEvent; 2)对消息进行初始化systemEvent = EventBus.getDefault();`
3)在需要的时候发送消息,比如下面的例子中是在用户点击事件的处理函数中发布消息。在这个例子中发消息的同时还带过去了一个参数,用来传递信息。
public void onClick(View v) { systemEvent.post(new SubmitEvent("qq")); }
5、在消息的接收端要做几件事:
1)定义消息
EventBus systemEvent; 2)对消息进行初始化systemEvent = EventBus.getDefault();
3)注册消息。systemEvent.register(this);`
4)添加消息处理函数
public void onEvent(SubmitEvent event){ switch (event.getShareAdress()) { case "qq": break; default: break; } }
在这里,有几个事件就要加几个消息处理函数,都是onEvent函数,只是函数里面的参数是你想传进来的消息类。
另外说明下,在一个activity中可以处理多个事件,这时只需要注册一次就行了,处理多个事件仅仅是增加onEvent函数的问题。这一点需要注意。
完成以上步骤你会发现用回调、handler等方法时需要复杂的理论和绕弯的代码,就这样简单地被实现了,是不是很神奇,感谢开发者的努力,让我等使用者的工作变得简单、高效。
另另外,EventBus只能用在同进程内的消息传递,不能跨进程,如果要跨进程进行通信,用广播比较好一点。
本篇仅仅是初步入门,后续再深入研究。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories