SharedUnPeekLiveData和UnPeekBus的区别:

一句话核心区别

SharedUnPeekLiveData = 类型安全、结构化、可维护的全局事件(推荐正式项目用)

UnPeekBus = 极简、字符串 key、快速开发的全局事件总线(适合简单消息)

一、先看写法对比(一眼看懂)

1. SharedUnPeekLiveData 写法

步骤 1:定义单例事件(统一管理)

kotlin

ini 复制代码
object GlobalEvent {
    val loginSuccess = SharedUnPeekLiveData<Boolean>()
    val userInfoChanged = SharedUnPeekLiveData<UserInfo>()
}

步骤 2:发送

kotlin

arduino 复制代码
GlobalEvent.loginSuccess.setValue(true)

步骤 3:接收

kotlin

javascript 复制代码
GlobalEvent.loginSuccess.observe(this) { 
    // it: Boolean
}

2. UnPeekBus 写法

无需定义,直接用字符串 key

发送:

kotlin

arduino 复制代码
UnPeekBus.send("login_success", true)

接收:

kotlin

kotlin 复制代码
UnPeekBus.observe<Boolean>(this, "login_success") {
    // it: Boolean
}

二、核心区别(项目架构必看)

1. 类型安全

  • SharedUnPeekLiveData:✅ 类型安全泛型明确,编译时检查,不会传错类型
  • UnPeekBus:❌ 无类型安全 靠字符串 key + 泛型指定,传错类型会崩溃

2. 事件可维护性

  • SharedUnPeekLiveData:✅ 可维护、可跳转、可搜索 所有事件都在 object GlobalEvent 里想找事件 → 直接点进去
  • UnPeekBus:❌ 散落在各处key 是字符串,容易写错、重复、难维护

3. 使用成本

  • SharedUnPeekLiveData:稍高(需要统一管理)
  • UnPeekBus:极低(一行发送一行接收)

4. 适用项目规模

  • SharedUnPeekLiveData:中大型项目、正式商业项目 ✅
  • UnPeekBus:小项目、快速原型、简单页面通知 ✅

三、官方推荐标准(KunMinX 官方规范)

1. 企业级项目、正规架构 → 必须用 SharedUnPeekLiveData

2. 简单小消息、快速开发 → 可以用 UnPeekBus


四、最实用的选择口诀(背会)

重要事件、结构化、要维护 → SharedUnPeekLiveData

如:

  • 登录成功
  • 用户信息改变
  • 订单状态更新
  • 全局配置变化
  • 多页面联动逻辑

简单通知、临时消息、懒得定义 → UnPeekBus

如:

  • 刷新列表
  • 关闭弹窗
  • 页面简单联动
  • 临时通知

五、最关键的总结(极简)

表格

维度 SharedUnPeekLiveData UnPeekBus
类型安全 ✅ 强安全 ❌ 弱安全
可维护性 ✅ 极高 ❌ 低
定义方式 统一单例管理 字符串 key
编译检查 ✅ 有 ❌ 无
项目推荐 商业项目、标准架构 小项目、快速开发
官方推荐 ✅ 首选 ✅ 次要

六、最终结论(你项目该用哪个)

你的项目只要是正规 APP → 全部使用 SharedUnPeekLiveData

UnPeekBus 只适合临时、简单、不重要的小消息

相关推荐
天空之城--5 小时前
Android Koin 完全指南:从原理到实践
android
zhangphil6 小时前
Android main thread主线程Choreographer doFrame发生FullSuspendCheck
android
TimeFine10 小时前
智能眼镜开发:获取真实的音频路由
android
pengyu10 小时前
【Kotlin 协程修仙录 · 渡劫境 · 中阶】 | 造化神兵:自定义 CoroutineDispatcher 与调度器的终极定制
android·kotlin
pengyu11 小时前
【Kotlin 协程修仙录 · 渡劫境 · 初阶】 | 飞升雷劫:CPS 变换与挂起函数字节码终极透视
android·kotlin
TimeFine11 小时前
智能眼镜开发:眼镜Touch后收音与触发播放系统音乐的矛盾处理
android
TimeFine11 小时前
智能眼镜开发:眼镜侧收集音频
android
又见情义12 小时前
Android 系统设置从平板版迁移至TV版实践
android
杉氧14 小时前
打破边界(一):实战编写 Android/iOS 原生模块 (Native Modules)
android·react native·前端框架