PackageVisibility 的查询白名单,Android 11 后的适配 PackageVisibility 的查询白名单,Android 11 后的适配 PackageVisibility 的查询白名单,Android 11 后的适配 Android 11(API 30)引入的 Package Visibility 限制,是我这几年做应用适配时踩坑最多、也最被低估的一个 2026-06-29 Android 0
LocalBroadcastManager 的废弃,应用内通信用什么替代 LocalBroadcastManager 的废弃,应用内通信用什么替代 LocalBroadcastManager 的废弃,应用内通信用什么替代 一个被忽略 5 年的废弃通知 2022 年 1 月,AndroidX Core 1.8.0-alpha01 版本发布,release notes 里有一 2026-06-29 Android 1
Compose 性能分析:Layout Inspector 之外还有什么 Compose 性能分析:Layout Inspector 之外还有什么 Compose 性能分析:Layout Inspector 之外还有什么 Layout Inspector 在 Android Studio 里挂了太多年了,从传统 View 时代就是性能分析的标配。Compose 出来以后, 2026-06-29 Android 1
CopyOnWriteArrayList 的读写分离,更新开销有多大 CopyOnWriteArrayList 的读写分离,更新开销有多大 「CopyOnWriteArrayList 的读写分离,更新开销有多大」 去年排查一个线上 OOM 问题时,堆栈里反复出现 java.util.concurrent.CopyOnWriteArrayList 的 add 方法,这让 2026-06-25 Android 3
ProfileInstaller 的 Baseline Profile 分发,Play Store 之外怎么发 ProfileInstaller 的 Baseline Profile 分发,Play Store 之外怎么发 「ProfileInstaller 的 Baseline Profile 分发,Play Store 之外怎么发」 Baseline Profile 这玩意儿,Google 推了有几年了。 2026-06-24 Android 7
RenderThread 的异步渲染,UI 线程真的减负了吗 RenderThread 的异步渲染,UI 线程真的减负了吗 RenderThread 的异步渲染,UI 线程真的减负了吗 从一次掉帧排查说起 去年在优化一个信息流页面的时候,我遇到了一个挺反直觉的现象。列表滑动时 Systrace 显示 UI 线程的 doFrame 耗时只有 6-7ms,远低于 2026-06-23 Android 9
Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir 一个被系统清理搞崩的线上事故 去年维护的一个工具类 App 在 Andr 2026-06-22 Android 6
WebSettings 的缓存模式,H5 混合应用的加载策略 WebSettings 的缓存模式,H5 混合应用的加载策略 WebSettings 的缓存模式,H5 混合应用的加载策略 去年维护一个存量混合应用时,遇到一个让我困惑了很久的问题:同样的 H5 页面,在 iOS 上二次打开几乎是瞬时的,Android 上却总是要从头加载。排查了一圈 CDN、HTT 2026-06-21 Android 8
Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 「Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑」 一个线上崩溃引出的问题 去年维护的一个项目,线上收到一条很奇怪的崩溃栈:Ille 2026-06-21 Android 5
App Startup 库真的能优化启动吗,实测数据 App Startup 库真的能优化启动吗,实测数据 App Startup 库真的能优化启动吗,实测数据 从一个真实的启动崩溃说起 去年下半年我在处理一个线上启动崩溃时,第一次认真审视了 App Startup 这个库。当时的问题是:我们在 Application.onCreate 里初始化了一个 2026-06-21 Android 6