EventBus使用说明

    xiaoxiao2021-11-29  27

    转载请标明出处: http://blog.csdn.net/mr_lawen/article/details/53214894

    一、 概述 EventBus是一款针对Android优化的订阅/发布事件总线,主要功能是替代Intent,Handler,BroadCast在Activity,Fragment,Service,线程之间传递消息,开销小,代码更优雅,将发布者和接收者解耦。 二、 使用步骤 (1) 配置依赖 在Android studio下app目录下的build.gradle文件中加入:

    compile 'de.greenrobot:eventbus:2.4.0'

    然后同步即可。 (2) 定义一个事件实体类

    public class FirstEvent { private String mMsg; public FirstEvent(String msg) { mMsg = msg; } public String getMsg() { return mMsg; } }

    (3) 在接受消息的页面进行注册

    EventBus.getDefault().register(this);

    (4) 在需要发送的页面进行发送

    EventBus.getDefault().post(new FirstEvent("event is posted"));

    (5) 接收消息页面的实现 一个有四个函数可以来实现消息接收,这里先实现一个

    public void onEvent(FirstEvent event) { mTextView.setText(event.getMsg()); }

    (6) 解除注册

    EventBus.getDefault().unregister(this);

    三、 使用进阶 之前说接收消息可以有四个函数来实现,下面就看看这四个函数的区别:

    (1) onEvent(Event event)

    使用onEvent()作为接收事件函数,那么事件在哪个线程发布出来的,onEvent()就会在这个线程中执行,也就是说发布事件和接收事件的线程是同一个线程。这个时候,在onEvent()方法里不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。

    (2) onEventMainThread(Event event)

    使用onEventMainThread()作为接收事件函数,无论事件是在哪个线程发布的,onEventMainThread()都会在主线程中执行,也就意味着可以做一些更新UI的操作,当然也是不能执行耗时操作的。

    (3) onEventBackground(Event event)

    使用onEventBackground()作为接收事件函数,如果事件是在主线程中发布的,那么onEventBackgound()就会在子线程中执行;如果事件是在子线程中发布的。

    (4) onEventAsync(Event event)

    使用onEventAsync()作为接收事件函数,无论事件是在哪个线程发布的,都会创建新的子线程再执行。

    (5) 如何调用对应函数

    上面列出了四个事件接收函数,那么问题来了,如何制定调用对应的函数呢?答案就是事件实体类的实例。发布事件传入的是哪个事件实体类的实例,接收时就调用参数是该实例的接收函数,如果有两个是呢,那么两个都会被调用。

    转载请注明原文地址: https://ju.6miu.com/read-678629.html

    最新回复(0)