文章索引:
EventBus 3.0 从入门到精通——初识EventBus
EventBus 3.0 从入门到精通——EventBus的应用场景
EventBus 3.0 从入门到精通——使用详解(一)
EventBus 3.0 从入门到精通——使用详解(二)
最近接手了一个项目,发现项目中有使用EventBus,因为之前只是泛泛的了解,没有深入学习过,所以借着这次机会就往深了了解一下,分享出来与大家共勉。先看看GitHub上的介绍吧。
EventBus简介
eventbus是一个针对Android优化的发布/订阅事件总线。
EventBus的特点:
- 简化组件之间的通信
- 事件的发送者和接收者解耦
- 对于Activities, Fragments和后台线程的支持表现更好
- 避免了复杂并且易出错的依赖和生命周期的问题(ps:这里的依赖我理解就是解耦的意思)
- 是你的代码更加简单
- 更加快速
- 体积更小
- 已经有超过100,000,000+的apps安装使用
- 有线程传送和优先订阅等高级特性
向你的project中添加EventBus
- 通过Gradle
compile 'org.greenrobot:eventbus:3.0.0'
- 通过Maven
<dependency>
<groupId>org.greenrobot</groupId>
<artifactId>eventbus</artifactId>
<version>3.0.0</version>
</dependency>
只用三个步骤开始使用EventBus
- 定义事件
public static class MessageEvent { /* 添加需要的代码 */ }
- 创建订阅者:声明一个订阅者,并且用注解标注它。之后再指定一个线程模式
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
注册和反注册你的订阅者。举个例子在Android中通常可以在Activity和Fragment的声明周期方法中使用。
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
- 发布事件
EventBus.getDefault().post(new MessageEvent());
以上是GitHub上官方的一个描述,通过上面的简单的几个步骤我们就可以先把EventBus使用起来,但是上面没有提及EventBus的使用场景以及一些高级特性,我会在下面的文章中为大家总结出来。