greenrobot-EventBus初探

最近, 公司开启了一个新项目. 所以, 以前没用到的新知识, 这次也可以拿来试用一下了=.=!. 这篇博客主要是翻译一下GreenRobot官网上的EventBus的基础用法, 以及标签属性的代表含义. 本文末尾会有EventBus的官网地址以及GitHub地址.


EventBus的特征 :

  1. 简单并且功能强大.
  2. 良好的测试系统.
  3. 高性能
  4. 方便的注释
  5. Android 主线程交互
  6. 后台线程交互
  7. 事件和用户传承
  8. 零配置
  9. 可配置

EventBus的使用步骤 :

步骤1 : Android Studio 配置 EventBus

compile 'org.greenrobot:eventbus:3.0.0'

步骤2 : 定义事件

public class MessageEvent {

    public final String message;

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

步骤3 : 创建观察者

// This method will be called when a MessageEvent is posted (in the UI thread for Toast)
// 当MessageEvent被当做参数发送的时候这个方法将会被触发.
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}

// This method will be called when a SomeOtherEvent is posted
// 当SomeOtherEvent被当做参数发送的时候这个方法将会被触发.
@Subscribe
public void handleSomethingElse(SomeOtherEvent event) {
    doSomethingWith(event);
}

并且在Activity或者Fragment生命周期中绑定和取消绑定监听

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

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

步骤4 : 发送广播

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

大致的流程就是 : Activity/Fragment 绑定监听. –> 然后, 利用@Subscribe标签创建订阅事件. –> 最后, 利用发送广播事件的参数(MessageEvent)的不同去寻找含有对应参数的订阅方法(public void onMessageEvent(MessageEvent event))并执行.这里面对应的参数就是MessageEvent.


主要流程梳理完了, 下面我们就来看看, @Subscribe订阅标签都包含哪些内容吧.

1. @Subscribe : 默认写法, 订阅者与发布者在相同线程.
2. @Subscribe(threadMode = ThreadMode.POSTING) : 默认写法的复杂形势
3. @Subscribe(threadMode = ThreadMode.MAIN) : 订阅者将会在Android UI线程被调用.
4. @Subscribe(threadMode = ThreadMode.BACKGROUND) : 如果发布者线程不是UI线程的话, 订阅者线程将与发布者为相同线程. 如果发布者为主线程, 订阅者将会开启一个后台线程, 并加入到线程池中按顺序执行. 注 : 使用此模式的事件处理程序应尽量快速返回,以避免阻塞后台线程.
5. @Subscribe(threadMode = ThreadMode.ASYNC) : 订阅者在后台线程被调用.


EventBus 初探 就这些了, 博客写的不好, 有的地方用词会不清晰, 希望大家留言指出 ^_^!

参考文献

EventBus For Android

EventBus GitHub

你可能感兴趣的:(Android学习笔记)