安卓EventBus 两步走

来源:互联网 发布:怎样申请淘宝子账号 编辑:程序博客网 时间:2024/05/21 01:30

Step1: 在build.gradle 中引入依赖

compile 'org.greenrobot:eventbus:3.0.0'

Step2: 以前跨多个界面更新UI可能会用到广播等,现在用eventbus非常方便
1.场景: eventbus可以在Activity、Fragment、BroadcastReceiver等中使用
2.使用:发送这边做发送处理,在接收这边注册即可
如A给B界面传递账号、密码的参数

A界面中的处理:

//手机号 和 密码HomeMingGroupEvent bean = new HomeMingGroupEvent();bean.setPhone(phone);bean.setPassword(password);EventBus.getDefault().post(bean);

public class HomeMingGroupEvent {

private String phone;private String password;public String getPhone() {    return phone;}public void setPhone(String phone) {    this.phone = phone;}public String getPassword() {    return password;}public void setPassword(String password) {    this.password = password;}

}

这种看着像能直接用Intent和startActivityForResult完成的操作
前者是直接的跳转 、后者是跳转后的回调 但是eventbus可以在跨多个界面做更新,当然并不一定要携带参数。因为我只需要告诉接收界面做更新的话可以直接这样写

//HomeMingGroupEvent 空的Bean类EventBus.getDefault().post(new HomeMingGroupEvent());//什么也不需要,只做通知public class HomeMingGroupEvent {}

B界面中的处理:

EventBus.getDefault().register(this); //注册

//注意 如果像上面这样写运行报类似 unregister 的错误就这样写 抽风了…

if (!EventBus.getDefault().isRegistered(this)) {            EventBus.getDefault().register(this); //注册        }
    @Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行    public void onSwitchEvent(HomeMingGroupEvent event) {        //MAIN UI主线程        //BACKGROUND 后台线程        //POSTING 和发布者处在同一个线程        //ASYNC 异步线程        //TODO  这里可以做更新UI、请求等的操作 一般MAIN就可以了         //上面A界面的发送操作若是在按钮点击事件里 点击后就行执行到这里了     }

最后注销即可:

    @Override    public void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this);//注销    }
原创粉丝点击