美文网首页
EventBus官方教程

EventBus官方教程

作者: 虎三呀 | 来源:发表于2018-05-07 23:53 被阅读0次

说明 :

本文翻译自官网,如英文较好者可自行去官网查看,本文如有错误,往众大神多多指出!

英文能力差,理解能力差(本人翻译生硬),想快速入门,可看我另一篇博客一篇搞定EventBus

事件总线:Android事件

EventBus是一个开源库的Android和java使用发布/订阅为 松耦合模式。EventBus使中央通信能够用几行代码解耦类——简化代码,消除依赖关系,加速应用程序开发。


你使用EventBus的好处:

  • 简化组件之间的通信
  • 解耦事件发送者和接收者
  • 使用UI artifacts (例如activity、fragment)和后台线程
  • 避免复杂易出错的依赖和生命周期问题
  • 快速;专门优化高性能
  • 很小 (<50k jar)
  • 实践证明100000000 +安装的应用程序
  • 具有传输线程、用户优先级等高级特性

进一步事件总线特性

  • Convenient Annotation based API: 简单放置 @Subscribe annotation 到您的订阅方法. 由于注释的生成时间索引, EventBus不需要在应用程序运行时做注解反射。
  • Android main thread delivery: 当与UI交互时,EventBus可以在主线程中传递事件,而不管发布的是什么事件。
  • Background thread delivery: 如果您的订户执行长时间运行的任务,EventBus也可以使用后台线程来避免UI阻塞。
  • Event & Subscriber inheritance: 在EventBus中,面向对象的范例适用于事件和订阅服务器类。假设事件类A是B的超类,B类型的张贴事件也将被发布给感兴趣的用户。同样地,考虑了用户类的继承。
  • Jump start:您可以立即启动-而不需要使用默认EventBus实例配置任何代码,可以从代码中的任何地方使用。
  • Configurable: 为了将EventBus调整为您的需求,可以使用Builder模式调整其行为。

事件特征集.

将EventBus添加到您的项目中

EventBus可在JCenter和Maven Central上使用,因此只需将依赖项添加到项目中即可。

EventBus开始使用

使用EnvestBUS的第一步,请单击 documentation / tutorial
, 特别是getting started guide.
以上便是官方文档翻译而来

如何在3个步骤中启动EnvestBUS

EnviBus API与1-2-3一样容易。
在我们开始之前 确保将EnviBUS添加到项目中作为依赖项.

Step 1: 定义事件

事件是POJO (普通java对象)没有任何具体的要求。

public class MessageEvent {

    public final String message;

    public MessageEvent(String message) {
        this.message = message;
    }
}

第2步:准备subscribers

订阅服务器实现事件处理方法 (也称为 “subscriber methods”) 这将在事件发布时被调用。这些都是用 @Subscribe annotation.
注意,EnvestBUS 3可以自由选择方法名称(如EnvestBUS 2中没有命名约定)。

// 当发布消息事件时,将调用此方法(在ToST的UI线程中)
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
 
// 当发布某个事件时,将调用此方法。
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

Subscribers 需要 注册注销 从事件总线上. 只有注册用户时,他们将收到事件.在Android中,在活动和片段中,你通常应该注册 根据它们的生命周期. 大多数情况下,启动/停止都可以正常工作。:

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}
 
@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

第三步:发布事件
从代码的任何部分发布事件。所有与事件类型匹配的当前注册用户将接收它。

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

Learn more

Have a look at the full documentation to learn about all features of EventBus.

相关文章

网友评论

      本文标题:EventBus官方教程

      本文链接:https://www.haomeiwen.com/subject/jhcmrftx.html