EventBus 使用介绍

转载 2013年12月05日 20:40:59

EventBus使用起来和Otto差不多,分订阅、注册、发布、取消注册等步骤:
在订阅者类中实现各种事件的订阅函数
public void onEvent(AnyEventType event) {}
把该订阅类注册到Bus中
eventBus.register(this);
向Bus发布事件
eventBus.post(event);
不需要的时候 取消订阅事件
eventBus.unregister(this);

和Otto相比, EventBus主要有3点不同:
1. 事件订阅函数不是基于注解(Annotation)的,而是基于命名约定的,在Android 4.0之前的版本中,注解解析起来比较慢 , 事件响应函数默认以“onEvent”开始,可以在EventBus中修改这个值,但是不推荐这么干
2. 事件响应有更多的线程选择
EventBus可以向不同的线程中发布事件,在ThreadMode 枚举中定义了4个线程,只需要在事件响应函数名称“onEvent”后面添加对应的线程类型名称,则还事件响应函数就会在对应的线程中执行,比如事件函数“onEventAsync”就会在另外一个异步线程中执行,ThreadMode定义的4个线程类型如下:
PostThread:事件响应函数和事件发布在同一线程中执行。这个是默认值,这样可以避免线程切换。
MainThread:事件响应函数会在Android应用的主线程(大部分情况下都是UI线程)中执行。
BackgroundThread:事件响应函数会在一个后台线程中执行。如果事件发布函数不是在主线程中,则会立即在事件发布线程中执行响应函数。如果事件发布函数在主线程中,EventBus则会在唯一的一个后台线程中按照顺序来执行所有的后台事件响应函数。

上面的3种事件响应函数,应该能够很快的执行完,不然的话会阻塞各自的事件发布。

Async:事件响应函数在另外一个异步线程中执行。该线程和发布线程、主线程相互独立。如果事件响应函数需要较长的时间来执行,则应该使用该模式,例如 网络访问等。需要注意的是,由于系统并行的限制,应该避免在同一时间触发大量的异步线程。 EventBus使用一个线程池来提高线程的效率。

3. EventBus支持 Sticky Event

有时候某个事件可能会用到多次,比如在前面介绍Event Bus模型一文的示例中,最新的位置更新信息,可能需要多次用到,真对这种情况,您可以把该事件发布为Sticky Event,然后,当需要查询该信息的时候,可以通过Bus的getStickyEvent(ClasseventType) 函数来查询最新发布的Event对象。
同一类型的事件只保存最新的Event对象。
注册和发布事件的函数分别为 registerSticky(…) 和 postSticky(Object event)
项目主页上还有和Otto之间性能对比的表格,以及性能测试的源码。



Read more: http://blog.chengyunfeng.com/?p=452#ixzz2mbUiuWed

32位位图到24位位图的转换

(一)功能在图像处理的很多实际应用中,我们需要对图像的颜色表示进行转换(如,将32位颜色转换到24位颜色等等)。本文通过一个简单的例子,说明了32位颜色到24位颜色的转换过程。程序假设当前window...

<Android> 利用RelativeLayout实现中间控件长度自适应

有三个控件,两个Button, 一个SeekBar,实现SeekBar在两个Button中间,长度自适应。 如图: 如果使用LinearLayout则需要指定SeekBar的长度,用Relativ...

Android--EventBus的使用介绍

EventBus使用详解EventBus是什么? EventBus是一种发布者和订阅者的事件分发模式。我们可以这么理解,比如我们订阅的Android Weekly,每当星期一0点这个时候,And...

Android EventBus框架(一)之使用详细介绍

源自:http://blog.csdn.net/happy_horse/article/details/51565441 研发DEMO背景 最近开发项目遇到一个情景,就是在APP主...

EventBus3.0 使用详细介绍

使用图解根据上面的这个图,我们来使用它引入首先就是引入到我们的项目中,Android Studio直接添加依赖即可:compile 'org.greenrobot:eventbus:3.0.0'使用1...
  • Greathfs
  • Greathfs
  • 2016年07月13日 22:36
  • 13688

EventBus介绍与使用

如果你学习过设计模式,那么你一直知道观察者模式。,既然能想到这个设计模式,那么就来看一个Android开源框架EventBus。主要功能是替代Intent、Handler、BroadCast在Acti...
  • king866
  • king866
  • 2016年12月29日 10:41
  • 2013

Android EventBus框架(一)之使用详细介绍

研发DEMO背景最近开发项目遇到一个情景,就是在APP主页MainActivity展示列表,有收藏功能,但是点收藏的时候,需要当前用户是已经登录身份,因此当用户点击列表item收藏按钮时,如果用户没有...

EventBus 3.0 使用介绍

EventBus3.0(greenrobot),它是一款针对Android的发布/订阅事件总线。它可以很方便的让我们在各个组件之间,组件和线程之间进行通信,并具有很好的解耦特性。 Publish...

EventBus3.0使用介绍

有空便过来研究eventbus3.0了。 这里简单介绍他的使用以及基本原理。如何使用(1)首先需要定义一个消息类,该类可以不继承任何基类也不需要实现任何接口。如:public class Messa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EventBus 使用介绍
举报原因:
原因补充:

(最多只允许输入30个字)