事件总线 EventBus 3.0 简单运用

EventBus(事件总线,3.0),类似广播机制具体步骤有四个
一、 注册事件总线

一般在onCreate()函数里面注册
EventBus.getDefault().register(this);

二、 产生事件

String json="Hello Second";
EventBus.getDefault().post(json);

三、 消费事件

@Subscribe(threadMode = ThreadMode.MAIN ,priority = 1,sticky = true)
public void helloEventBus(String msg){
        tv.setText(msg);
}
消费事件有如下步骤:
1、订阅(subscribe)事件,只要有事件产生,马上能消费。用标签来注解订阅(@Subscribe)
2、必须有一个消费的函数(例如上面helloEventBus()),不然会报错,名字随便起,建议见名知意。
3、指定消费线程,有四个类型,如下
    1)、ThreadMode.MAIN(在主线程消费,能更新UI)。
    2)、ThreadMode.POSTING(posting顾名思义,在哪个线程产生的事件,就在哪个线程消费时间)。
    3)、ThreadMode.BACKGROUND(background,在后台消费,如果当前线程是主线程就另起一个新的子线
    程在后台消费,如果当前线程是子线程,就直接在子线程消费)
    4)、ThreadMode.ASYNC(异步消费,无论在子线程还是主线程产生事件,都新开一个子线程消费)
3、sticky(滞留),这个属性默认为FALSE,见名知意,这个只要就是为了能让产生事件滞留一段时间再进行消
   费,不过它的产生事件就要用postSticky()函数来产生
4、还可以设置优先运行的级别priority,值越小优先级越低,默认为0。

四、 取消注册事件总线
一般在onDestroy()函数里面取消注册

EventBus.getDefault().unregister(this);

Tip:EventBus的事件总线的消费事件是根据接收的参数类型进行判断是否消费的。例如假如产生事件传递的参数是String类型,那么消费事件的函数的接收参数也必须是String类型,不管有多少个消费事件的函数,只要是String类型的消息发过来,所有的消费函数都会进行消费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值