EventBus 的使用方法
2016-01-22 17:53
211 查看
在项目中遇到了界面关闭的时候需要通知activity或者fragment之间数据的刷新,了解了EventBus的使用,特别总结下来,方便使用。
主要功能:替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
一丶下载地址:点击打开链接下载资源
二丶使用方法
可以导入 jar包或者引用整个工程
1.在发送消息的界面 我这里是点击 返回键 发送一个消息
2. 在接受消息界面,注册eventBus
3.在接受消息界面,重写onEventMainThread()方法,把需要刷新的数据操作都放在里面
Event类
4.在销毁界面时注销
主要功能:替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
一丶下载地址:点击打开链接下载资源
二丶使用方法
可以导入 jar包或者引用整个工程
1.在发送消息的界面 我这里是点击 返回键 发送一个消息
case R.id.btn_back: //返回键 EventBus.getDefault().post(new Event(Event.FROM_PERSONINFORMATION_ACTIVITY, user)); finish(); break;
2. 在接受消息界面,注册eventBus
//注册eventBus EventBus.getDefault().register(this);
3.在接受消息界面,重写onEventMainThread()方法,把需要刷新的数据操作都放在里面
<span style="white-space:pre"> </span>public void onEventMainThread(Event event){ String msg = event.getMsg(); int code = event.getCode(); //如果来自个人资料界面 if(Event.FROM_PERSONINFORMATION_ACTIVITY.equals(msg) ){ mUser = (User) event.getData(); mTv_username.setText(mUser.NickName); mTv_motto.setText(mUser.SignName); if(code == 1){ mTv_username.setText("代用名"); mTv_motto.setText("卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭。"); //用户置为空 mUser = null; } } if(Event.FROM_HOMEPAGE_FRAGMENT.equals(msg)){ mTv_username.setText(mUser.NickName); mTv_motto.setText(mUser.SignName); } }
Event类
<span style="white-space:pre"> </span>public class Event implements Serializable{ public static final String FROM_MODIFYNICK_ACTIVITY = "isFromModifyNick";//来自修改昵称和签名 public static final String FROM_MYAPPOINTMENT_ACTIVITY = "isFromMyAppointment";//来自我的预约 public static final String FROM_PERSONINFORMATION_ACTIVITY = "isFromPersoninformation";//来自我的个人信息 public static final String FROM_HOMEPAGE_FRAGMENT = "isFromhomepagefragment";//来自我的首页fragment String msg; int code=0; Object data; public Object getData() { return data; } public void setData(Object data) { this.data = data; } public Event(String msg) { this(msg,0); } public Event(String msg, int code) { this.msg = msg; this.code = code; } public Event(String msg, Object data,int code) { this.msg = msg; this.data = data; this.code = code; } public Event(String msg, Object data) { this(msg,0); this.data=data; } public String getMsg() { return msg; } public int getCode() { return code; } }
4.在销毁界面时注销
<span style="white-space:pre"> </span>//销毁调用 @Override public void onDestroy() { super.onDestroy(); if (rechangeReceiver != null) { //注销广播 mApplication.unregisterReceiver(rechangeReceiver); } //注销EventBus EventBus.getDefault().unregister(this); }
相关文章推荐
- EventBus 的使用方法
- 12. No More MVC
- mac gradle 安装
- CF620C - Pearls in a Row
- UIView的layoutSubviews和drawRect
- 水塘抽样
- 原型模式(prototype)
- Visual Studio Code 笔记
- python内部执行过程
- java中类,对象,方法的理解
- Zend Studio配置
- 在父菜单和子菜单在同一张表的级联怎么做啊
- Ext4.2 select 和 query 区别与联系
- android studio修改新项目package名称
- linux修改ethx
- 乘法口诀表
- LeetCode227. Basic Calculator II
- UITableView-FDTemplateLayoutCell 使用
- Ubuntu14.04安装JDK与配置环境变量
- iOS崩溃调试