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

来源:互联网 发布:西安汇知中学四大恶霸 编辑:程序博客网 时间:2024/05/19 14:16

这是这个系列的最后一篇,主要讲讲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的基本讲解就到这里了,谢谢。


0 0
原创粉丝点击