EventBus的简单和原理

EventBus是一款轻量级的发布/订阅事件总线,适用于Android,用于替代Intent、Handler和Broadcast。本文介绍了EventBus的基本使用,包括注册、注销、发送和接收事件的函数,以及如何决定调用的函数。此外,还深入探讨了EventBus的设计模式、内存管理以及与RxBus的对比,并提供了关键源码分析。

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

基本介绍

  1. EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
    源码

基本使用

  1. 自定义一个类,用于发送和接收信息。构造时传入要发送的信息,然后get方法返回信息。(也可以是空类).
    例如:
public class FirstEvent {  
  
    private String mMsg;  
    public FirstEvent(String msg) {  
        // TODO Auto-generated constructor stub  
        mMsg = msg;  
    }  
    public String getMsg(){  
        return mMsg;  
    }  
}  
  1. 在要接收信息的地方注册EventBus
  • 例如:在要接收信息的activity中的onCreate()中注册
EventBus.getDefault().register(this);
  //使用默认方式注册
  1. 在注册的页面中注销EventBus
  • 例如:在activity中的onDestroy中注销:
EventBus.getDefault().unregister(this);    //反注册EventBus
  1. 发送消息,使用EnventBus的post方法
  • 发送消息是使用EventBus中的Post方法来实现发送的,发送过去的是我们新建的类的实例!
EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked"));  
  1. 接收消息,在要接收消息的地方重写EnventBus的接收信息的函数
  • 例如重写onEnventMainthread()
 public void onEventMainThread(FirstEvent event) {    
        Log.d("harvic", "onEventMainThread收到了消息:" + event.getMsg());  
    }  
EventBus的接收函数
  1. EventBus的接收函数有以下4种:onEvent、onEventMainThread、onEventBackgroundThread、onEventAsync
  • onEvent: 如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vinson武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值