pigeon icon indicating copy to clipboard operation
pigeon copied to clipboard

Android轻量级消息总线框架

pigeon

pigeon 是一个完全由kotlin编写的适用于android开发的数据总线型库,便于在项目中实现数据解耦,实现方便且稳定的数据流通讯

与市面上常见的总线型库相比,如eventbus ,有如下特点:

  • 无需初始化,随时随地想使用就使用
  • 无需进行注册/解除注册操作,如eventbus的register操作,实现订阅/发送 一行代码即可,无需担心由消息引起的内存泄露
  • 轻量级,可直接实现源码级别接入
  • 支持订阅线程切换,线程切换依靠协程,轻量,简单实现订阅自由
  • 底层实现采用flow api,稳定,更加高效
  • 流程通俗易懂,便于学习和二次开发

原理解析

https://juejin.cn/post/7058603761693884446/

使用说明

发送数据

实现lifecylceOwner的类可以采用如下方式
this.post(数据,【可选,是否是粘性事件,默认为false】)

或者直接使用库提供的方式
MessageCenter.post(event,isStick)

接收/订阅数据

this.subscribeEvent(数据类型,如String::class.java,【可选消息处理线程,默认是主线程】) {
               dosomething
            }

项目层级介绍

  • 包含module分别为测试代码与核心代码
  • 常规的代码层级

环境准备

建议直接用最新的稳定版本Android Studio打开工程。目前项目已适配Android Studio Arctic Fox | 2020.3.1, 低版本的Android Studio可能因为Gradle版本过高而无法正常打开项目。