EventBus

EventBus

是一种用于Android的事件发布-订阅总线。

  • 事件:普通的Java对象,可以携带数据。
  • 订阅:在订阅方订阅。
  • 发布:在发布方将事件发布出来。

在这里插入图片描述

注册

在订阅方进行注册,一般在onStart方法进行注册。

EventBus.getDafault().register(this);

取消注册

在订阅方取消注册,一般在onStop方法

EventBus.getDefault().unregister(this);

事件回调函数

在订阅方

  • 必须要添加注解 @Subscribe
  • 方法必须为 public void

例:

@Subscribe
public void 方法名(事件类 事件引用){
}

事件的发布

在发布方进行。

EventBus.getDefault().post(事件对象);

EventBus–ThreadMode

控制回调函数运行在那个线程。

  • POSTING:在哪一个线程发布,回调函数就在哪个线程执行。
  • MAIN:回调函数一定在主线程执行
  • MAIN-ORDERED:回调函数在主线程执行,但与MAIN不同的是:在MAIN模式下,发布方是会被订阅方堵塞的(假如回调是一个耗时操作,则后续指令须在此回调执行完毕后才能处理),而在MAIN-ORDERED模式下,后续指令会立即执行。
  • BACKGROUNG:若发布方在子线程发布,则回调函数也在其线程执行,若发布方在主线程发布,则回调函数会在子线程进行。
  • ASYNC:回调函数会在另外一个独立的新开的线程中执行,异步,不会造成阻塞

模式的设置方法

修改回调函数的注解

@Subscribe(threadMode = ThreadMode.POSTING)

粘性事件

通常我们都是先订阅,后发布,而粘性事件就是先发布,后订阅。
在这里插入图片描述

回调方法

注解

@Subscribe(sticky = true)

发布方

EventBus.getDefault().postSticky(事件对象);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值