ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 Android 开发者对 ViewModel 的熟悉程度大概仅次于 Activity 和 Fragment,但 SavedStateHand 2026-06-09 Android 2
AtomicFU 的无锁并发,替代 synchronized 的场景 AtomicFU 的无锁并发,替代 synchronized 的场景 AtomicFU 的无锁并发,替代 synchronized 的场景 从一段性能测试的异常数据说起 去年在做 Kotlin 协程的通道(Channel)性能基准测试时,我遇到了一个反直觉的结果。测试场景很简单:两个线程通过 Cha 2026-06-08 Android 0
Tile Service 开发:快速设置面板的小组件 Tile Service 开发:快速设置面板的小组件 Tile Service 开发:快速设置面板的小组件 从 NotificationListener 的权限噩梦逃过来 去年做系统工具类应用时,我被 NotificationListenerService 的权限申请流程折磨得够呛。用户得跳转到系统 2026-06-08 Android 1
Firebase Performance Monitoring,采集开销实测 Firebase Performance Monitoring,采集开销实测 「Firebase Performance Monitoring,采集开销实测」 Firebase Performance Monitoring 在 Android 社区里的存在感一直有点微妙。官方文档把它包装成"开箱即用 2026-06-06 Android 3
Zygote 的预加载优化,对 App 启动的影响 Zygote 的预加载优化,对 App 启动的影响 Zygote 的预加载优化,对 App 启动的影响 Android 应用的冷启动速度,很大程度上取决于 Zygote 进程的分叉效率。这个结论在官方文档里被反复提及,但具体到实际项目中,Zygote 预加载的类列表到底该怎么调整、能省多少毫秒、会不 2026-06-06 Android 3
Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的 Converter 机制被很多人视为黑盒。官方文档里轻描淡写一句 "addConverterFactory",Stack Overflow 上搜到的答 2026-06-04 Android 3
Biometric 指纹认证的不同安全等级,怎么选 Biometric 指纹认证的不同安全等级,怎么选 Biometric 指纹认证的不同安全等级,怎么选 Android 的 Biometric API 从 BiometricPrompt 取代 FingerprintManager 开始,官方就在推一个"统一入口"的概念。但真到了要上线指纹支付、应用 2026-06-03 Android 4
Kotlin 的 Duration API,替代手写毫秒计算 Kotlin 的 Duration API,替代手写毫秒计算 Kotlin 的 Duration API,替代手写毫秒计算 一个让我放弃 `System.currentTimeMillis()` 的线上故障 去年维护一个音视频通话 SDK 时,我踩过一个很蠢的坑。代码里要判断用户是否超过 30 秒没 2026-06-02 Android 3
Compose 动画的 animate*AsState 底层怎么实现的 Compose 动画的 animate*AsState 底层怎么实现的 Compose 动画的 animate*AsState 底层怎么实现的 Jetpack Compose 1.0 正式版发布到现在已经三年多了,animate*AsState 这套 API 几乎成了每个 Compose 开发者最先 2026-06-01 Android 2
LeakCanary 2.x 是怎么找到内存泄漏的 LeakCanary 2.x 是怎么找到内存泄漏的 LeakCanary 2.x 是怎么找到内存泄漏的 从 1.x 到 2.x:一次彻底的重写 我第一次认真读 LeakCanary 源码是在 2019 年,当时项目里 1.6.3 版本的 RefWatcher 把内存泄漏检测搞成了性能灾难。Activ 2026-06-01 Android 2