事件总线 EventBus 3.0 简单运用

来源:互联网 发布:淘宝睡衣货到付款 编辑:程序博客网 时间:2024/06/06 02:54

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类型的消息发过来,所有的消费函数都会进行消费。

0 0
原创粉丝点击