EventBus3.0.0了解及使用
2016-06-21 11:24
369 查看
github:https://github.com/greenrobot/EventBus
app依赖库:compile 'org.greenrobot:eventbus:3.0.0'
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);
到此结束了,其实跟以前的版本差不多,只是只是接收的方法更灵活而已,如有什么问题或者是有新的见解,请留言评论,谢谢。
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);
到此结束了,其实跟以前的版本差不多,只是只是接收的方法更灵活而已,如有什么问题或者是有新的见解,请留言评论,谢谢。
相关文章推荐
- IE:使用搜索助手
- CMOS使用及维护须知
- CSS使用心得体会
- C#中尾递归的使用、优化及编译器优化
- 深入HTTP head的使用详解
- C#虚方法的声明和使用实例教程
- 影响jQuery使用的14个方面
- 如何高效的使用内存
- Mysql使用简单教程(三)
- C#中Dictionary类使用实例
- PowerShell入门教程之创建和使用配置文件实例
- SQL语句实现查询SQL Server内存使用状况
- 使用准则进行条件查询
- MySql安装与使用图文教程【推荐】
- 学习使用PHP数组
- 使用PHP的错误处理
- 使用 atmadm 来显示 ATM 适配器上传入和传出呼叫的统计信息
- JQuery EasyUI的使用
- Linux系统下Mysql使用简单教程(一)