EventBus基础用法

匿名 (未验证) 提交于 2019-12-03 00:27:02

1、EventBus三要素
Event:事件。可以是任意类型的对象
Subscriber:事件订阅者。在EventBus3.0之前消息吹了的方法只能限定于onEvent,onEventMainThread,onEventBackgroundThread,和onEventAsync,它们分别代表4种线程模型。而在3.0之后,事件处理的方法可以随便取名,但是需要添加一个注解@Subscribe,并且要指定线程模型(默认是Posting)
publisher:事件发布者。可以在任意线程任意位置发布事件,直接调用EventBus到的post方法,根据post函数参数的类型,会自动调用订阅相应类型事件的函数。
2、EventBus的4种线程模型
POSTING: 该事件在哪个线程发布出来,事件处理函数就在哪个线程运行
MAIN:该事件无论在哪个线程发布出来,事件处理函数都会在主线程中执行,所以时间处理的时间不能太长,长了会导致ANR.
BACKGROUND:如果时间在UI线程中发布出来,那么该事件处理函数就会在新的线程中运行;如果事件本来就是在子线程中发布,那么该事件处理函数直接在发布事件的线程中执行。
ASYNC:无论该事件在哪个线程发布,该事件处理函数都会在新建的子线程中运行。
3、使用

// 自定义事件类 public class MessageEvent {  }  // 注册 EventBus.getDefault().register(this);  // 发送事件 EventBus.getDefault().post(messageEvent);  // 处理事件 @Subscribe (threadMode = ThreadMode.Main,sticky = false, priority = 0) public void XXX(MessageEvent messageEvent) {  }

4、普通事件:先订阅再发布
黏性事件:先发布再订阅

文章来源: EventBus基础用法
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!