Job
文章平均质量分 90
Tom4i
智能座舱系统应用开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android 使用使用 flow 来实现一次性事件的最佳实践
本文介绍了在Android开发中处理一次性事件(如按钮点击、条目删除等)的最佳实践方案。一次性事件与StateFlow不同,它们不需要缓存且触发后应仅消费一次。文章按照安全性和易用性排序,推荐了三种主要方法: Channel方案(官方推荐): 使用Kotlin的Channel组件实现一对一事件发送/接收 无缓存特性可避免页面重建后重复执行 需配合repeatOnLifecycle实现生命周期安全 EventWrapper封装方案: 通过包装类标记事件消费状态 适合已使用StateFlow但需处理一次性事件的原创 2025-09-09 16:32:22 · 1102 阅读 · 0 评论 -
使用 Binder 机制监听进程死亡
Android Binder进程死亡监听机制 Binder是Android进程通信(IPC)的核心机制,其DeathRecipient功能可监听服务端进程异常终止。关键实现包括: 原理:Binder驱动检测服务端进程终止后,通知所有注册了死亡回调的客户端 核心类: IBinder.linkToDeath()注册监听 DeathRecipient.binderDied()回调处理原创 2025-09-03 11:00:25 · 923 阅读 · 0 评论 -
Kotlin CoroutineScope.cancel 和 Job.cancel 有何联系
Kotlin协程中CoroutineScope.cancel()和Job.cancel()都用于取消协程,但作用范围不同。scope.cancel()会取消作用域内所有协程(通过取消根Job)并使作用域失效,适用于组件销毁等场景;而Job.cancel()仅取消单个Job及其子Job,不影响作用域其他协程,适合精细控制任务。二者都基于Job的层级结构实现递归取消,但前者用于整体管理,后者用于局部控制。开发时应优先使用scope.cancel()管理生命周期,必要时才用Job.cancel()处理特定任务。原创 2025-08-27 20:07:24 · 843 阅读 · 0 评论 -
Android 系统应用如何根据包名静默卸载应用
摘要:Android系统出于安全考虑,严格限制静默卸载应用,仅系统级应用或Root权限设备可实现。系统应用需预装在/system目录并使用厂商签名,通过PackageInstaller或PackageManagerAPI实现无确认卸载;Root方案需执行pm uninstall命令。普通应用只能调用系统卸载界面(需用户手动确认)。高版本Android推荐使用PackageInstaller,需配合PendingIntent接收结果。该功能深度依赖系统权限,普通开发者无法直接实现。(149字)原创 2025-08-27 10:44:31 · 1226 阅读 · 0 评论 -
Kotlin Flow 与数据倒灌
冷流和热流是Kotlin协程中两种数据流模式:冷流按需产生数据,每个收集者触发独立数据流;热流主动产生数据,多个收集者共享同一数据流。数据倒灌指新订阅者接收到历史数据现象,主要发生在热流中,由缓存机制导致。避免方法包括:冷流无需处理;热流需合理配置SharedFlow的replay参数(0表示不缓存历史数据)及缓存策略,区分事件和状态场景使用。原创 2025-08-25 10:54:27 · 954 阅读 · 0 评论
分享