EvenBus的入门

EventBus类似观察者模式:

当某个行为被执行时,通知观察者,改变某个变量,某个方法。

在EventBus中的观察者通常有四种订阅函数(当某个行为被执行时,被调用的方法)

1、onEvent    //在当前线程执行,故不建议执行耗时操作

2、onEventMainThread  //不管是哪个线程post触发,都会在UI线程执行,故不能执行耗时操作

3、onEventBackground  //不管是UI线程,还是子线程触发,都会在子线程执行,故在UI线程触发时,会创建另一个新的字线程

4、onEventAsync  //不管是UI线程,还是子线程触发,都会重新创建新的子线程


前提:下载EventBus的jar包,导包

总结:在接收类中注册销毁EventBus,并且可以实现四种订阅函数,在促发方法的类中只需要post()即可

1、自定义一个类,可以是空类,可以有属性,有构造方法等

/**
 * Created by Administrator on 2015/7/31.
 */
public class PayForTotalMoney {
    private String mMsg;
    private double temp;
    public PayForTotalMoney(String msg, double temp) {
        // TODO Auto-generated constructor stub
        this.mMsg = msg;
        this.temp = temp;
    }
    public String getMsg(){
        return this.mMsg;
    }
    public double getTemp(){
        return this.temp;
    }
}

2、在接收页面类中注册

//在要接收消息的页面注册
EventBus.getDefault().register(this);
3、在需要触发的类中把消息post后,在接收页面类中就会执行

EventBus.getDefault().post(new PayForTotalMoney("+",expandableListViewAdapter.getmList().get(groupPosition).getGroup_price()));
4、在接收页面类中执行

有四个方法,这里是其中一个

  /*onEventMainThread(新建的类)对应的类来促发不同的方法, 总金额显示*/
    
    public void onEventMainThread(PayForTotalMoney event) {
        if (event.getMsg().equals("+")) {
            ZONGJINE += event.getTemp();
        } else if (event.getMsg().equals("-")) {
            ZONGJINE -= event.getTemp();
        } else {
            ZONGJINE += event.getTemp();
        }
        tvtotal_money.setText("总金额:" + String.format("%.2f", Math.abs(ZONGJINE)));
    }

5、在接收页面类中执行后,一定要记得在onDestroy中解除注册
@Override
    protected void onDestroy() {
        super.onDestroy();
        //解除注册
        EventBus.getDefault().unregister(this);
    }

我现在主要是学习把各类中的属性设置为private型的
例如需要用到静态方法或者属性的,可以用EventBus
public static double ZONGJINE = 0.0;
这个就可以用EventBus解决,提高安全性

我是刚学习的菜鸟,做点笔记,有错的还望指导一二。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值