OverlayManagerService 的悬浮窗权限,不同厂商差异 OverlayManagerService 的悬浮窗权限,不同厂商差异 OverlayManagerService 的悬浮窗权限,不同厂商差异 从一次线上崩溃说起 去年维护一个直播 SDK 的时候,我们收到一份来自 vivo X90 的崩溃报告。堆栈很干净,干净到让人头疼: android.view 2026-07-15 Android 2
SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制 SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制 「SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制」 去年给一个电商 App 做进程回收后的状态恢复时,我踩到了一个坑:用户把商品加入购物车后切到后台,过十几分钟再回来, 2026-07-15 Android 2
Lottie 动画的文件体积优化,JSON 精简技巧 Lottie 动画的文件体积优化,JSON 精简技巧 Lottie 动画的文件体积优化,JSON 精简技巧 Lottie 在 Android 上的普及程度已经不用多说,Airbnb 开源这套方案近十年后,它几乎成了 App 里播放复杂动画的标准答案。但一个常被忽略的问题是:设计导出的 JSON 文件 2026-07-15 tool 2
Systrace 和 Perfetto 的录制与解读 Systrace 和 Perfetto 的录制与解读 Systrace 和 Perfetto 的录制与解读:一个 Android 性能工程师的实战笔记 从一次 ANR 定位说起 去年处理过一个棘手的 Input ANR,用户反馈在列表滑动时偶发卡死,线下复现概率不到 5%。常规的 logcat 抓栈 2026-07-15 tool 2
DataStore 替代 SharedPreferences,迁移要注意什么 DataStore 替代 SharedPreferences,迁移要注意什么 DataStore 替代 SharedPreferences,迁移要注意什么 Jetpack DataStore 从 1.0.0 稳定版发布到现在已经三年多了,Google 官方文档里那句 "SharedPreferenc 2026-07-13 Android 3
Layout Inspector 的进阶:3D 视图和属性检查 Layout Inspector 的进阶:3D 视图和属性检查 Layout Inspector 的进阶:3D 视图和属性检查 Android Studio 自带的 Layout Inspector 在 4.0 版本之后经历了一次彻底的重写,从基于 IntelliJ 插件的老架构迁移到了新的底层实现 2026-07-13 tool 5
Turbine 测试 Kotlin Flow,让异步变同步 Turbine 测试 Kotlin Flow,让异步变同步 「Turbine 测试 Kotlin Flow,让异步变同步」 Flow 的测试一直是个让人头疼的事。Kotlin 协程把异步代码写得像同步一样顺手,可一到单元测试里,这种"顺手"就变成了"烫手"。runTest 确实解决了挂起函数的问题, 2026-07-13 tool 4
Google 的架构组件示例仓库,Learning Path Google 的架构组件示例仓库,Learning Path Google 的架构组件示例仓库,Learning Path 一个被低估的官方资源 去年重构公司一个老项目的时候,我在 GitHub 上翻 Android 官方示例,偶然点进了 android/architecture-component 2026-07-13 tool 3
GnssStatus.Callback 的卫星定位状态,原始数据怎么用 GnssStatus.Callback 的卫星定位状态,原始数据怎么用 GnssStatus.Callback 的卫星定位状态,原始数据怎么用 Android 的 GNSS(全球导航卫星系统)API 在 API 24(Android 7.0)引入 GnssStatus.Callback 时,给开发者 2026-07-13 Android 3
RecyclerView 的预加载机制,Prefetch 到底有用吗 RecyclerView 的预加载机制,Prefetch 到底有用吗 RecyclerView 的预加载机制,Prefetch 到底有用吗 从一次列表卡顿说起 去年维护一个信息流应用时,我遇到个挺典型的性能问题。列表滑动到第 15 条左右开始掉帧,Systrace 上能看到明显的红色帧, Chore 2026-07-13 Android 3