EventBus 《四》 事件的优先级及其EventBus Demo

事件优先级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,android,android,android,android,Fragment,EventBus,EventBus,局部,广播,E,EventBus的用)