Android EnentBus 简单使用。

参考
只是写了最简单和最常用的用法。
1,在哪个界面 接受就要在哪个页面注册
2,接受数据。
3,发送数据(如果这个页面只是负责发送数据,就没必要注册、)
4,定义实体类(用于发送和接受)

一,前提

    compile 'org.greenrobot:eventbus:3.0.0'

场景: 页面A—>页面B—>页面C
1,A通过B跳到C。如果是A—>B 当B 改变数据。返回A也要更改数据。这个时候,我们通常使用回调。
2, 那么。当A—>B—>C
问题:当C改变时,返回后要求改变A的数据。 这时候通过回调是不能实现的。B在中间呢。(。。。)至少我无法实现、、、、

步骤:
1,C页面:发送数据给A。 这个时候不要考虑B了。

  //发送事件给A
  String msg="C页面的数据";
                EventBus.getDefault().post(new EventBusInfo(a));

2,A页面接受

//初始化。。。
        EventBus.getDefault().register(this);//在当前界面注册一个订阅者
       //把这个方法复制过去。直接敲不出来
        @Subscribe           
        public  void onEventMainThread(EventBusInfo event){
        //收到事件后。要做的逻辑操作。
        event.getMsg();//这个就是  "C页面的数据"

    }

3,忘记了一个步骤:他们之前传输数据的桥梁 也就是 实体类或者 是事件。

public class EventBusInfo {
    private String msg;

    public EventBusInfo(String msg) {//事件传递参数
        this.msg = msg;
    }

    public String getMsg() {//取出事件参数
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

这里需要注意的是:每两个页面只能有一个实体类
比如:A–B 是UserInfo 实体类作为桥梁
那么:A–C就不能用这个实体类了。要新建一个。

最后记得取消注册

 @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值