Compose 动画的 animate*AsState 底层怎么实现的 Compose 动画的 animate*AsState 底层怎么实现的 Compose 动画的 animate*AsState 底层怎么实现的 前段时间在做一个折叠面板的动画优化时,我踩到了一个挺隐蔽的坑。表现很简单:用 animateDpAsState 控制一个 Column 的高度展开,如果用户 2026-08-19 Android 0
Kotlin 的 Contracts API,告诉编译器一些事 Kotlin 的 Contracts API,告诉编译器一些事 「Kotlin 的 Contracts API,告诉编译器一些事」 去年重构一个老旧 Android 模块时,我抽了一个非常普通的高阶函数,想给 Trace.beginSection 和 Trace.endSection 包一层,让 S 2026-08-19 Android 13
Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 从一个通知跳转的诡异现象说起 去年维护一个电商类 App 时,我遇到一个几乎让我怀疑 2026-08-19 Android 0
Dynamic Feature Module 上线一年后的真实体验 Dynamic Feature Module 上线一年后的真实体验 「Dynamic Feature Module 上线一年后的真实体验」 去年 Q2,我们把应用里两个最重的业务块拆成了 Dynamic Feature Module。动机很直接:Base APK 体积突破了 55MB,在东南亚市场的 2026-08-19 Android 0
Hilt 的编译时代码生成,到底生成了什么 Hilt 的编译时代码生成,到底生成了什么 「Hilt 的编译时代码生成,到底生成了什么」 前阵子把项目里的 Hilt 从 2.44 升到 2.48,CI 上跑了一次 clean build,忽然注意到日志里刷出来两百多行 Generated source file: ... 的路径打印。这让我意识 2026-08-14 Android 0
Material You 动态取色,实际项目中落地难点 Material You 动态取色,实际项目中落地难点 Material You 动态取色,实际项目中落地难点 去年把主工程 Material Components 从 1.5.0 升到 1.9.0 时,我们顺手打开了 DynamicColors。测试包发出去第二天,设计组就在企业微信里扔了一张截图 2026-08-10 Android 13
Firebase Performance Monitoring,采集开销实测 Firebase Performance Monitoring,采集开销实测 Firebase Performance Monitoring,采集开销实测 最近把项目里的 Firebase BOM 从 31.5.0 升到 32.7.2 之后,冷启动数据开始出现一个奇怪的偏移。用 Macrobench 2026-08-10 Android 0
AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 前阵子给一个内部工具做 Android 14 适配,核心功能依赖 AccessibilityService 遍历节点做自动化点击。代码在 Android 1 2026-08-10 Android 10
ConcurrentLinkedQueue 的无锁队列,适合什么场景 ConcurrentLinkedQueue 的无锁队列,适合什么场景 「ConcurrentLinkedQueue 的无锁队列,适合什么场景」 去年在优化一个相机预览模块的帧缓冲区时,我把原来的 LinkedBlockingQueue 换成了 ConcurrentLinkedQueue。当时的想法很 2026-08-06 Android 9
Shizuku 权限方案,无 Root 调用系统 API 的实践 Shizuku 权限方案,无 Root 调用系统 API 的实践 「Shizuku 权限方案,无 Root 调用系统 API 的实践」 Android 14 上,我尝试在应用内直接通过反射关闭另一个应用的通知权限。代码刚跑起来就收到了一个无情的 SecurityException,日志很直白:uid 2026-08-06 Android 19