您的位置:首页 > 其它

EventBus 的使用方法

2016-01-22 17:53 211 查看
在项目中遇到了界面关闭的时候需要通知activity或者fragment之间数据的刷新,了解了EventBus的使用,特别总结下来,方便使用。

主要功能:替代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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: