EventBus 《四》 事件的优先级及其EventBus Demo
16lz
2021-01-23
事件优先级Priority
`register`的函数重载中有一个可以指定订阅者的优先级,我们知道`EventBus`中有一个事件类型到List<Subscription>的映射,在这个映射中,所有的Subscription是按priority排序的,这样当post事件时,优先级高的会先得到机会处理事件。
优先级的一个应用就事,高优先级的事件处理函数可以终于事件的传递,通过`cancelEventDelivery`方法,但有一点需要注意,`这个事件的ThreadMode必须是PostThread`,并且只能终于它在处理的事件。
# 缺点
无法进程间通信,如果一个应用内有多个进程的话就没办法了
# 注意事项及要点
- 同一个onEvent函数不能被注册两次,所以不能在一个类中注册同时还在父类中注册
- 当Post一个事件时,这个事件类的父类的事件也会被Post。
- Post的事件无Subscriber处理时会Post `NoSubscriberEvent`事件,当调用Subscriber失败时会Post `SubscriberExceptionEvent`事件。
其他
`EventBus`中还有个Util包,主要作用是可以通过`AsyncExecutor`执行一个Runnable,通过内部的RunnableEx(可以搜索异常的Runnable)当Runnable抛出异常时通过`EventBus`发消息显示错误对话框。没太大兴趣,不作分析
项目主页:http://download.csdn.net/detail/androidstarjack/8925145
一个很简单的Demo,Activity中包含列表和详情两个Fragment,Activity启动时加载一个列表,点击列表后更新详情数据:EventBusDemo
更多相关文章
- Android输入事件从读取到分发一:是谁在读取输入事件
- Cocos2d-x从C++端调用Android端的非静态函数接口
- 认识一下Android 事件分发机制
- android click 和onTouch 事件处理机制
- Android 事件处理详解(一) —— 基于监听的事件处理 1
- android click 和onTouch 事件处理机制 (转)
- Android studio3.0 - 解决创建Java工程运行Java的main()入口函数