一,EventBus的详情
EventBus就是一个传递数据的工具。主要在线程中执行,主要运用于回调,唤醒某指定的方法。
例如:在Broadcast Recriver 中的接收器接收到信息,通过EventBus的方法把消息传回Activity中。
例如:两个Activity中,前一个Activity结束后,通过EventBus的方法把消息传回后一个Activity中。
二,使用方法
1,Android Studio中导入所需的EventBus包
implementation 'org.greenrobot:eventbus:3.0.0'
2,定义消息事件
/**
* 消息事件
*/
public class MsgEvent {
String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
3,事件处理
EventA
public class EventAActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_a);
//注册EventBus
EventBus.getDefault().register(this);
}
/**
* 跳转到EventB
*/
public void onJump(View view){
Intent intent = new Intent(this , EventBActivity.class);
startActivity(intent);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void Event(MsgEvent msgEvent){
Toast.makeText(this , msgEvent.getMsg() , Toast.LENGTH_LONG).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
//注销EventBus
EventBus.getDefault().unregister(this);
}
}
4,发出事件
EventB
public class EventBActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event_b);
}
/**
* 结束当前Activity,并发起事件
* @param view
*/
public void onSend(View view){
MsgEvent msg = new MsgEvent();
msg.setMsg("发出事件");
EventBus.getDefault().post(msg);
finish();
}
}
5,效果如图: