当前Activity发送事件给上一个Activity
当前的Activity关闭后给打开它的上一个Activity发送事件,这个类似与startActivityForResult()方法,能够实现页面关闭的回调
首先我们在第一个Activity中注册注销订阅者事件
其次我们定义订阅者方法接收事件
EventBusAActivity 代码如下
public class EventBusAActivity extends MyBaseActivity {
@BindView(R.id.tv)
TextView tv;
@BindView(R.id.btn)
Button btn;
@Override
public void initUI() {
setContentView(R.layout.activity_event_bus_a);
ButterKnife.bind(this);
//EventBus使用注册
EventBus
.getDefault()
.register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//EventBus注销
EventBus
.getDefault()
.unregister(this);
}
//定义方法接收消息.
//threadMode = ThreadMode.MAIN
@Subscribe()
public void onEventBusMessage(String msg) {
String concat = msg.concat("-------->");
LogUtils.i(concat);
showToast(concat);
tv.setText(concat);
}
@OnClick(R.id.btn)
public void onViewClicked() {
startActivity(EventBusBActivity.class);
}
}
我们点击按钮,跳转到一个新的Activity
EventBusBActivity 代码如下:
public class EventBusBActivity extends MyBaseActivity {
@BindView(R.id.et)
EditText et;
@BindView(R.id.btn_close)
Button btnClose;
@Override
public void initUI() {
setContentView(R.layout.activity_event_bus_b);
ButterKnife.bind(this);
}
@OnClick(R.id.btn_close)
public void onViewClicked() {
//发送消息
EventBus
.getDefault()
.post(et.getText().toString().concat("eventbus is coming backing!"));
finish();
}
}
我们在EventBusBActivity 输入框中输入内容,然后点击按钮发布事件,并关闭当前页面
image.png
此时回到EventBusAActivity中接收到事件并做处理:
image.png
日志输入结果:
EventBusAActivity
.onEventBusMessage(L:48):
593066063eventbus is coming backing!-------->
ok,到此我们已经实现在页面关闭的时候,使用EventBus发布事件给上个页面!