美文网首页
类似Eventbus自定义

类似Eventbus自定义

作者: 落寞1990 | 来源:发表于2024-12-11 21:59 被阅读0次

EventBus 是一种用于简化组件间通信的发布-订阅模式事件总线。它允许在应用程序的不同部分之间解耦通信,例如 Activities, Fragments 和 Services 之间。为了创建一个类似于 EventBus 的自定义实现,我们需要考虑以下几个关键点:

事件模型:定义如何表示和处理事件。
发布/订阅机制:实现注册监听器、发布事件以及注销监听器的功能。
线程调度:决定事件是在哪个线程中被分发。
生命周期管理:确保监听器在其所有者(如 Activity 或 Fragment)销毁时正确地注销。
下面是一个非常简化的自定义 EventBus 实现示例。请注意,这只是一个基础版本,并不包含实际 EventBus 库的所有特性,比如线程调度、粘性事件等高级功能。

import java.util.ArrayList;
import java.util.List;

// 定义一个简单的接口,所有事件处理器都需要实现这个接口。
interface EventListener {
    void onEvent(Object event);
}

// 自定义的 EventBus 类。
public class CustomEventBus {

    private static final CustomEventBus instance = new CustomEventBus();
    private final List<EventListener> listeners = new ArrayList<>();

    // 私有构造函数保证单例模式。
    private CustomEventBus() {}

    // 获取单例实例。
    public static CustomEventBus getInstance() {
        return instance;
    }

    // 注册监听器。
    public void register(EventListener listener) {
        if (!listeners.contains(listener)) {
            listeners.add(listener);
        }
    }

    // 注销监听器。
    public void unregister(EventListener listener) {
        listeners.remove(listener);
    }

    // 发布事件给所有已注册的监听器。
    public void post(Object event) {
        for (EventListener listener : listeners) {
            listener.onEvent(event);
        }
    }
}

// 使用示例:
// 假设我们有一个具体的事件类型 MyEvent。
class MyEvent {
    // 这里可以添加任何你想要传递的数据。
}

// 然后我们可以创建一个监听器,当特定事件发生时执行某些操作。
CustomEventBus.getInstance().register(new EventListener() {
    @Override
    public void onEvent(Object event) {
        if (event instanceof MyEvent) {
            // 处理 MyEvent...
        }
    }
});

// 在需要的地方发布事件。
CustomEventBus.getInstance().post(new MyEvent());

相关文章

  • EventBus和RxBus的使用

    EventBus介绍: Rx:函数响应式编程,EventBus:事件总线 。EventBus 功能类似handle...

  • 自定义简易EventBus

    本章通过自定义一个简易的EventBus来了解EventBus的框架思路; EventBus的设计思路是通过向内存...

  • EventBus 如何发送延时事件

    在项目中使用了EventBus3.0,遇到个场景需要延时执行某动作,想用EventBus进行类似postDelay...

  • EventBus使用介绍(一)

    首先EventBus采用的观察者模式,这类似与RXJava,原理如下图 EventBus用到非常多的场景之一是替代...

  • JetPacks之数据传递工具

    相比RxBus,EventBus,LiveData有个非常简单的LiveEventBus参考文章类似github ...

  • spring cloud 学习笔记三

    事件总线 用到的注解:@RefreshScope,目的通过发送通知刷新内容 类似android eventbus ...

  • EventBus3.0使用(三)

    上一篇EventBus3.0使用(二) 优先级和事件取消 EventBus也有优先级之分,和广播类似的,优先级越高...

  • Android-回调方法

    一.为什么要用到回调? 在不同的地方进行消息传递,类似于EventBus,A页面做完一件事通过Eventbus发送...

  • LiveDataBus

    LiveDataBus是基于LiveData实现的类似EventBus的消息通信框架,它是基于LiveData实现...

  • 小程序开发小技巧:小程序页面间如何进行通信

    FlashEvent FlashEvent 小程序页面间的通信工具 - 类似于EventBus, 极易集成、使用 ...

网友评论

      本文标题:类似Eventbus自定义

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