EventBus的简单使用

本文详细介绍EventBus库在Android中的使用方法,包括基本概念、下载、使用步骤及粘性事件等高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

EventBus是GreenRobot出品的Android系统的一个Event Bus类库,主要是用来简化应用组件之间的通信。

EventBus框架原理流程图

这里写图片描述

  1. Publisher:发布者, 通过post()方法将消息事件Event发布到事件总线
  2. EventBus:事件总线
  3. Subscriber:订阅者, 收到事件总线发来的消息。即onEvent方法被执行。注意参数类型必须和发布者发布的参数一致。

二、下载EventBus

Gradle:

compile 'org.greenrobot:eventbus:3.0.0'

三、使用(3 steps)

1.定义事件(自定义类,比如)

public class MessageEvent { /* 添加需要的字段 */ }

2.添加订阅者

// onCreate()进行注册
EventBus.getDefault().register(this);
// 需要添加注解
// 接收消息
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {/* 处理事件event... */};
// 在onDestory()进行解除注册
EventBus.getDefault().unregister(this);

3.发布事件

EventBus.getDefault().post(event);

四、进阶(Sticky Events)

***粘性事件***
    在事件发送的时候,并没有直接的订阅者,当注册订阅者的时候,我们可以获取以前发送事件

1.定义事件(自定义类,比如)

public class MessageEvent { /* 添加需要的字段 */ }

2.添加订阅者

@Override
public void onStart() {
    super.onStart();
    // onStart()进行注册
    EventBus.getDefault().register(this);
}
// 接收消息
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(MessageEvent event) {
    // 必须在主线程更新UI
    textField.setText(event.message);
}
@Override
public void onStop() {
    // 在onStop()进行解除注册
    EventBus.getDefault().unregister(this);
    super.onStop();
}

3.发布sticky事件

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

4.如果不需要事件,进行移除

MessageEvent stickyEvent = EventBus.getDefault().getStickyEvent(MessageEvent.class);
if(stickyEvent != null) {
    EventBus.getDefault().removeStickyEvent(stickyEvent);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值