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)方法就可以了。

二:如何使用

定义一个事件对象

《EventBus框架》

创建MainActivity并注册订阅者

《EventBus框架》

在MainActivity中实现onEvent**方法

《EventBus框架》

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

《EventBus框架》

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

《EventBus框架》

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

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

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

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

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

    原文作者:e条虫
    原文地址: https://www.jianshu.com/p/842e404d6ad3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞