Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 「Kotlin 的 Sealed Interface 比 Sealed Class 好在哪」 去年把项目里的状态机从 Sealed Class 迁到 Sealed Interface 时,踩了个编译器版本相关的 2026-07-10 Android 7
ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 被忽视的 API:从 Android 7.1 到今天的尴尬地位 ShortcutManager 这个 API 在 Android 7.1(API 25)引入,到现在已经横跨了八 2026-07-09 Android 16
NetworkSecurityConfig 的证书固定,配置注意事项 NetworkSecurityConfig 的证书固定,配置注意事项 NetworkSecurityConfig 的证书固定,配置注意事项 去年处理一个支付 SDK 的接入需求时,对方要求必须做证书固定(Certificate Pinning)。当时心想这玩意儿 Android 7.0 就原生支持了 2026-07-08 Android 6
VpnService 的隧道实现,MTU 和 DNS 配置细节 VpnService 的隧道实现,MTU 和 DNS 配置细节 「VpnService 的隧道实现,MTU 和 DNS 配置细节」 Android 的 VpnService 从 API 14 就有了,但真正能做出稳定可用的隧道实现,踩的坑远比文档上写的多。我去年维护一个基于 VpnService 的 2026-07-07 Android 14
Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 去年接手了一个企业级 MDM 应用的功耗优化项目,用户反馈很直接:装了这个 App 2026-07-06 Android 9
WorkManager 的约束条件,电池优化下还靠谱吗 WorkManager 的约束条件,电池优化下还靠谱吗 WorkManager 的约束条件,电池优化下还靠谱吗 从一次凌晨的崩溃告警说起 去年维护的一个后台上传模块,线上突然报了大量 WorkInfo.State.FAILED 的异常。看日志很诡异:任务明明设置了 NetworkType.CONNE 2026-07-06 Android 8
DownloadManager 的大文件下载,断点续传靠谱吗 DownloadManager 的大文件下载,断点续传靠谱吗 「DownloadManager 的大文件下载,断点续传靠谱吗」 去年维护一个视频缓存项目时,我接到了一个看起来挺简单的需求:后台下载 500MB 以上的视频文件,支持断点续传,网络切换后能自动恢复。产品经理的原话是"系统不是有 Down 2026-07-06 Android 9
ContentResolver 的批量操作,applyBatch 还靠谱吗 ContentResolver 的批量操作,applyBatch 还靠谱吗 ContentResolver 的批量操作,applyBatch 还靠谱吗 从一次联系人同步崩溃说起 去年维护一个企业通讯录同步模块时,我在 Firebase Crashlytics 里看到一条稳定复现的崩溃: androi 2026-07-03 Android 7
PendingIntent 的可变性声明,Android 12 的强制要求 PendingIntent 的可变性声明,Android 12 的强制要求 「PendingIntent 的可变性声明,Android 12 的强制要求」 Android 12 的 targetSdkVersion 31 强制要求 PendingIntent 必须显式声明可变性,这个改动在 2021 2026-07-02 Android 6
Kotlin 的 Inline Class 和 Value Class,字节码层面看什么 Kotlin 的 Inline Class 和 Value Class,字节码层面看什么 Kotlin 的 Inline Class 和 Value Class,字节码层面看什么 从一次性能调优的困惑说起 去年维护一个高频交易相关的 Android 模块时,团队里有人提议用 Kotlin 的 val 2026-07-01 Android 10