EventBus 是Android 两个组件间通信的框架
简单使用
建立依赖,可以去github上找最新版本,我这里是用3.3.1版本
compile 'org.greenrobot:eventbus:3.1.1'
新建一个消息类,用来存放需要发送的消息数据
//名字可以随便取
public class TestEventBean {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
在需要接受消息的类中注册和解注册,我这是在Activity 中,所以在onCreate和onDestroy中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册
EventBus.getDefault().register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//解注册
EventBus.getDefault().unregister(this);
}
在改类中新建一个方法,用来接受消息的回调
/**
*方法的名字可以随便起,注意要加上Subscribe 注解
*方法的参数传前面新建的消息类
*/
@Subscribe()
public void received(TestEventBean testEventBean) {
//接受到消息后回调方法,获取发送消息内容
Log.e("TAG", "received: ------->" + testEventBean.getMessage());
}
在需要发送的消息的类中,我这里是在第二个Activity 中点击发送消息
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button button = findViewById(R.id.bt_send);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TestEventBean testEventBean = new TestEventBean();
testEventBean.setMessage("测试组件通信");
//在需要发送消息的地方掉用该方法
EventBus.getDefault().post(testEventBean);
}
});
}
}
最后在有注解的方法中就能获取到发送的内容
结语
谢谢大家阅读,如有不足请指出,方便我改进
网友评论