您的位置:首页 > 其它

EventBus3.0.0了解及使用

2016-06-21 11:24 369 查看
github:https://github.com/greenrobot/EventBus

app依赖库:compile 'org.greenrobot:eventbus:3.0.0'

一、概述

因为EventBus3.0.0跟以前的版本使用方法略有不同,所以在这记录一下。

二、了解及使用

1、定义一个消息类

public class OneEventBean {

private String msg;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}
}2、在需要接收消息的界面注册EventBus
EventBus.getDefault().register(this);3、在接收消息界面写一个接收的函数(可以自定义函数名),但是这个地方需要加上@Subscribe标签(必须加上,EventBus3.0.0内部根据它来识别所需要调用的方法)
@Subscribe(threadMode = ThreadMode.POSTING)
public void onEventMainThread(OneEventBean busBean) {
String msg = busBean.getMsg();
Log.i("TAG", "busBean.getMsg()==" + msg);
et.setText(busBean.getMsg());
Toast.makeText(this, busBean.getMsg(), Toast.LENGTH_SHORT).show();

}
@Subscribe标签参数说明:

ThreadMode.POSTING:默认方式,该事件在哪个线程发送出来的,就会在那个线程中运行,也就是说发送事件和接收事件线程在同一个线程(尽量不要在其中做耗时操作);
ThreadMode.MAIN:不管事件是在哪个线程中发送出来的,都会在UI线程中执行,接收事件就会在UI线程中运行(类似Handler);
ThreadMode.BACKGROUND:如果事件是在UI线程中发送出来的,那么就会在子线程中运行,如果事件本来就是子线程中发送出来的,则直接在该子线程中执行;
ThreadMode.ASYNC:无论事件在哪个线程发送,都会创建新的子线程在执行。
4、在需要发送消息的界面发送消息

OneEventBean oneEventBean = new OneEventBean();
oneEventBean.setMsg("测试EventBus-----------+++++++-");
EventBus.getDefault().post(oneEventBean);5、在需要接收消息的界面注销EventBus(不要忘掉哦)
EventBus.getDefault().unregister(this);

到此结束了,其实跟以前的版本差不多,只是只是接收的方法更灵活而已,如有什么问题或者是有新的见解,请留言评论,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息