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

相关推荐
GitLqr7 小时前
Flutter 3.44 插件内置 Kotlin (KGP) 双向兼容适配指南
android·flutter·dart
随遇丿而安12 小时前
第11周:Activity 跳转与传值 + 跳转优化
android
私人珍藏库13 小时前
[Android] BBLL 开源第三方B哩电视TV端
android·app·生活·工具·多功能
杉氧15 小时前
跨平台资源管理:一套代码如何搞定 Android、iOS 和 Web 的图片与多语言?
android·架构·android jetpack
安卓修改大师16 小时前
安卓修改大师实战:从反编译到定制的完整APK修改指南
android
柚鸥ASO优化17 小时前
安卓APP推广的“降本增效”密码:守好商店内,打好商店外
android·aso优化
我是一颗柠檬18 小时前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
Android-Flutter18 小时前
android compose shadow 阴影 使用
android·kotlin·compose
帅次18 小时前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
2501_9437823518 小时前
【共创季稿事节】摩斯电码转换器:编码表与双向转换的实现
android·华为·鸿蒙·鸿蒙系统