Android      Android事件处理框架EventBus使用注意点   
文章目录  [隐藏]

关于EventBus,已经有海量博文资料。
这里记录几点eventbus-3.0.0-beta1使用时的问题。

1.准备

官方代码库:https://github.com/greenrobot/EventBus
Jar包地址:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22de.greenrobot%22%20AND%20a%3A%22eventbus%22


新建安卓项目,将jar放入libs里


2.事件订阅者与订阅函数

直接上代码,关于 Event:事件、Subscriber:事件订阅者、Publisher:事件发布者 3个概念就不赘述了。
这里要注意的就是,先看代码:

“重写”,当然不是重写,定义这4个订阅函数的时候

    public void onEvent(Ojbect event)

    public void onEventMainThread(Ojbect event)

    public void onEventBackgroundThread(Ojbect event)

    public void onEventAsync(Ojbect event)

必须要用 @Subscribe 注解,否则会报错 EventBusException: Subscriber class MainActivity and its super classes have no public methods with the @Subscribe annotation
这个“MainActivity”就是你注册订阅者的类。

事件发布

使用 EventBus.getDefault() 得到一个单例的EventBus实例,再通过post发一个event。看起来就和Handler没2样,确实如此。


sendonEventEventAsync 和 sendonEventAsync 2个方法发送的都是 EventAsync ,而上一步中订阅函数里有2个正是接收的此类型event。同注释说的一样,如果发送出的event类型对应多个订阅函数的参数类型,那么就会触发多个订阅函数。


关于EventBus,知乎有言:https://www.zhihu.com/question/32179258/answer/54989242

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设