1、EventBus简介
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
2、使用流程
1)、下载EventBus Jar包
2)、自定义消息类
public class MyEventMessage {
private String msg;
public MyEventMessage(String msg) {
super();
// TODO Auto-generated constructor stub
this.msg=msg;
}
public String getMsg(){
return msg;
}
}
3)、注册
EventBus.getDefault().register(this);
4)、发送消息
EventBus.getDefault().post(new MyEventMessage("send message success"));
5)处理消息
public void onEventMainThread(MyEventMessage msg){
tv.setText(msg.getMsg());
}
6)、取消注册
EventBus.getDefault().unregister(this);
下面这个例子,从mainactivty点击按钮跳转到secondactivity,点击secondactivity按钮把“send message success”这个消息发给mainactivty,mainactivity的textview显示发过来的消息
MyEventMessage类代码,只有一个构造方法,和一个get方法
public class MyEventMessage {
private String msg;
public MyEventMessage(String msg) {
super();
// TODO Auto-generated constructor stub
this.msg=msg;
}
public String getMsg(){
return msg;
}
}
mainactivity代码
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn=(Button) findViewById(R.id.btn);
tv=(TextView) findViewById(R.id.tv);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(MainActivity.this,SecondActivity.class));
}
});
/**注册*/
EventBus.getDefault().register(this);
}
/**处理消息*/
public void onEventMainThread(MyEventMessage msg){
tv.setText(msg.getMsg());
}
@Override
protected void onDestroy() {
super.onDestroy();
/**取消注册*/
EventBus.getDefault().unregister(this);
}
}
secondactivity代码
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button send=(Button) findViewById(R.id.send);
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EventBus.getDefault().post(new MyEventMessage("send message success"));
}
});
}
}