十,当前Activity发送事件给上一个Activity

当前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发布事件给上个页面!

demo地址

demo源码

你可能感兴趣的:(十,当前Activity发送事件给上一个Activity)