EventBus框架

一:EventBus是个什么东西

下载地址:https://github.com/greenrobot/EventBus

EventBus就是publish/subscribe消息总线,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。

它的三要素:

Event:事件。可以是任何的对象。

Subscriber:事件订阅者,接收特定的事件。方法以onEvent**开头,一共有四个方法onEvent,onEventMainThread,onEventBackgroundThread,onEventAsync。它们之间的区别在于在不同的线程。等会会有一一举例。

Publisher:事件发布者,用于通知Subscriber有事件发生,可以在任何的地方发布事件。使用也是简单,只要调用post(Object)方法就可以了。

二:如何使用

定义一个事件对象

创建MainActivity并注册订阅者

在MainActivity中实现onEvent**方法


点击发送UI线程中的事件,onEvent执行就是在UI线程中,onEventMainThread也运行在UI线程中,onEventBackgroundThread是另启动了一个线程,onEventAsync也是另启动了一个线程。

点击发送工作线程中的事件,onEvent执行在工作线程中,onEventMainThread运行在UI线程中,onEventBackgroundThread运行在当前的工作线程中,onEventAsync启动了另一个线程。

所以根据上面的结果可以很好的理解各个onEvent的区别:

onEvent:事件在哪个线程发布出来的,就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。

onEventMainThread:事件无论是从哪个线程发布出来的,都会在UI线程中执行。

onEvnetBackground:事件是在UI线程中发布出来的,那么就会在子线程中运行,如果事件本来就是子线程中发布出来的,那么就直接在该子线程中执行。

onEventAsync:使无论事件在哪个线程发布,都会创建新的子线程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就...
    Ten_Minutes阅读 593评论 0 2
  • 一、EventBus框架的github地址:github.com/greenrobot/EventBus 主要用于...
    黄培忠阅读 400评论 0 0
  • 1. Publisher是发布者, 通过post()方法将消息事件Event发布到事件总线 2. EventBus...
    onlyxing阅读 1,098评论 0 1
  • 在Android开发中可能会遇到过这样一种情况,两个Activity或者Activity与Service、Acti...
    MQLX阅读 345评论 0 3
  • 《面朝大海,春暖花开》 很喜欢《面朝大海,春暖花开》 这首诗让我看到了一个善良淳朴纯真乐观简单容易满足重感情的海子...
    羽毛凌乱不成衣阅读 695评论 4 4