(原创)简单介绍Android的EventBus(下)

这是这个系列的最后一篇,主要讲讲EventBus的@Subscribe。

Subscribe主要有三个属性:

threadMode:声明事件订阅函数的执行模式

sticky:表示该事件订阅函数是否接收粘性事件,默认为false,表示不接收

priority:声明事件订阅函数的事件接收优先级,默认为0

第二、三个不用说了,今天就着重介绍第一个

threadMode仔细划分起来一共有四个模式

1、ThreadMode.PostThread

这个表示默认模式,表示该事件在哪个线程发布出来的,事件订阅函数就会在这个线程中运行,

也就是说发布事件和接收事件线程在同一个线程。

注意:使用这个方法时,在事件订阅函数中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。

2、ThreadMode.MainThread

这个表示UI线程模式,不论事件是在哪个线程中发布出来的,事件订阅者都会在UI线程中执行,接收事件就会在UI线程中运行。

这个在Android中是非常有用的,因为在Android中只能在UI线程中跟新UI,所以在该模式表示的时间订阅函数中是不能执行耗时操作的。

3、ThreadMode.BackgroundThread

子线程执行模式,如果事件是在UI线程中发布出来的,那么事件订阅函数就会在子线程中运行,

如果事件本来就是子线程中发布出来的,那么事件订阅函数直接在该子线程中执行。

4、ThreadMode.Async

强制子线程模式,表示无论事件在哪个线程发布,都会创建新的子线程来执行事件订阅函数

最后讲一讲取消时间订阅

先执行的订阅函数可以取消事件订阅,后面的事件订阅函数将无法收到发布事件,方法如下:
EventBus.getDefault().cancelEventDelivery(event);

关于EventBus的基本讲解就到这里了,谢谢。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值