EventBus 3.x 的快速使用

作者: ayuhani | 来源:发表于2018-02-26 13:38 被阅读56次

这是自己工作中的一篇笔记。
文章已同步至 CSDN:http://blog.csdn.net/qq_24867873/article/details/79376401

EventBus 可以很方便地进行各组件间的通信,解耦性更强,比广播更好用。

快速使用

1. 编译
compile 'org.greenrobot:eventbus:3.1.1'
2. 自定义事件类
public class MessageEvent {

    // 成员变量根据自己的需求创建
    private int type;

    // 通过构造方法传递数据
    public MessageEvent(int type) {
        this.type = type;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }
}
3. 注册事件与解除注册

一般来说,在 OnCreate() 方法中进行注册:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_layout);
    EventBus.getDefault().register(this);
}

与之对应的,在 OnDestroy() 中解除注册:

@Override
protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}
4. 发送事件
EventBus.getDefault().post(new MessageEvent(type));
5. 接收与处理事件
/**
* @Subscribe 注解必须要写,线程需要指定
* 方法名可随意
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
    switch (event.getType()){
        // do your thing
    }
}

上面提到了线程模型,它一共有 5 种:

  • POSTING(默认): 事件处理方法的线程跟发布事件的线程是同一个线程;
  • MAIN:在 Android 中,事件处理方法在主线程 (UI线程) 中调用,不能进行耗时操作;
  • MAIN_ORDERED:在 Android 中,事件处理方法在主线程 (UI线程) 中调用。 与 MAIN 不同的是,该事件将始终排队等待发布,这确保了事件发布不会被阻塞;
  • BACKGROUND:在 Android 中,事件处理方法在后台线程中调用,因此不能进行 UI 操作。如果发布事件的线程是主线程 (UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程;
  • ASYNC:无论事件发布的线程是哪一个,事件处理方法始终会新建一个子线程运行,不能进行 UI 操作。

以上便是 EventBus 的最基本的使用,是不是很方便呢。

欢迎关注我的微信公众号

相关文章

  • EventBus 3.x 的快速使用

    这是自己工作中的一篇笔记。文章已同步至 CSDN:http://blog.csdn.net/qq_24867873...

  • EventBus 3.X使用

    EventBus介绍 是一个Android和Java的开源库,使用发布者/订阅者模式进行松散耦合。 EventBu...

  • EventBus 3.X 的使用

    这篇文章主要记录一下EventBus的使用,详情EventBus官方文档 1. 概念 EventBus能够简化各组...

  • eventbus快速使用

    引入 eventbus 1、在数据接收页面—订阅,取消订阅,接收数据 2、在数据传送的地方—发送数据 注意 Eve...

  • EventBus

    《EventBus使用详解(一)——初步使用EventBus》 《EventBus使用详解(二)——EventBu...

  • EventBus源码详解

    EventBus笔记 一、EventBus使用 EventBus使用有四步骤: 二、Eventbus.getDef...

  • Android Rxjava实现EventBus

    一:使用RxJava1模仿EventBus传值,快速方便 依赖: compile'io.reactivex:rxj...

  • EventBus的使用和理解

    为什么要使用EventBus?或者说使用EventBus有什么好处? 让我们带着问题去了解和使用EventBus。...

  • EventBus的使用,以及源码分析

    EventBus的使用,以及源码分析 EventBus的使用 EventBus能够简化各组件间的通信,能够有效的分...

  • Android实际开发中,如何愉快的使用EventBus 3.+

    一、EventBus的使用场景 二、EventBus的介绍 三、EventBus的一般使用步骤(A->B:A页面接...

网友评论

    本文标题:EventBus 3.x 的快速使用

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