您的位置:首页 > 移动开发 > Android开发

暴雨夜初探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、创建事件类,这个类可以是一个空类,也可以通过构造函数向在事件发布者和接受者之间传递信息。

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只能用在同进程内的消息传递,不能跨进程,如果要跨进程进行通信,用广播比较好一点。

本篇仅仅是初步入门,后续再深入研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android