EventBus 3.0 从入门到精通——初识EventBus

来源:互联网 发布:matlab矩阵循环赋值 编辑:程序博客网 时间:2024/06/01 08:20

文章索引:
EventBus 3.0 从入门到精通——初识EventBus
EventBus 3.0 从入门到精通——EventBus的应用场景
EventBus 3.0 从入门到精通——使用详解(一)
EventBus 3.0 从入门到精通——使用详解(二)

最近接手了一个项目,发现项目中有使用EventBus,因为之前只是泛泛的了解,没有深入学习过,所以借着这次机会就往深了了解一下,分享出来与大家共勉。先看看GitHub上的介绍吧。

EventBus的GitHub地址

EventBus简介

eventbus是一个针对Android优化的发布/订阅事件总线。
image

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的使用场景以及一些高级特性,我会在下面的文章中为大家总结出来。