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 只适合临时、简单、不重要的小消息

相关推荐
千里马学框架3 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo3 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077003 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼3 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone3 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen3 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone3 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui