EventBus(初级)
概述:
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦
使用步骤:
1。引入libs包 自定义一个类
2。需要接收消息的页面进行注册EventBus EventBus.getDefault().register(this);
EventBus.getDefault().unregister(this);
3。发送数据的页面通过EventBus.getDefault().post(object);发送数据
java代码如下
自定义类:
public class MyEventType {
private String msg;
public MyEventType(String msg) {
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);
//注册EventBus
EventBus.getDefault().register(this);
tv = (TextView) findViewById(R.id.tv);
}
public void ToSecondActivity(View v) {
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
//处理接收到的数据
// public void onEventMainThread(MyEventType event) {
//MyEventType 自定义的类
public void onEventMainThread(MyEventType event) {
String msg = "接收到MainActivit的信息" + event.getMsg();
System.out.println("-----------onEventMainThread----------------");
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show();
tv.setText(msg);
}
@Override
protected void onDestroy() {
super.onDestroy();
//解除注册
EventBus.getDefault().unregister(this);
}
}
SecondActivity 代码
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
EventBus.getDefault().post(new MyEventType("MainActivity info"));