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 3
Turbine 测试 Kotlin Flow,让异步变同步 Turbine 测试 Kotlin Flow,让异步变同步 「Turbine 测试 Kotlin Flow,让异步变同步」 Flow 的测试一直是个让人头疼的事。Kotlin 协程把异步代码写得像同步一样顺手,可一到单元测试里,这种"顺手"就变成了"烫手"。runTest 确实解决了挂起函数的问题, 2026-07-13 tool 3
Google 的架构组件示例仓库,Learning Path Google 的架构组件示例仓库,Learning Path Google 的架构组件示例仓库,Learning Path 一个被低估的官方资源 去年重构公司一个老项目的时候,我在 GitHub 上翻 Android 官方示例,偶然点进了 android/architecture-component 2026-07-13 tool 2
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 2
SonarQube 代码质量门禁,团队落地经验 SonarQube 代码质量门禁,团队落地经验 SonarQube 代码质量门禁,团队落地经验 从一次深夜回滚说起 去年 Q3 我们团队经历过一次典型的技术债反噬。凌晨两点,生产环境一个空指针异常把订单结算服务打挂了。根因定位很快:某个分支合并时,新同事把 Optional.of() 用成了 Opt 2026-07-10 tool 5
Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 「Kotlin 的 Sealed Interface 比 Sealed Class 好在哪」 去年把项目里的状态机从 Sealed Class 迁到 Sealed Interface 时,踩了个编译器版本相关的 2026-07-10 Android 5
ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 被忽视的 API:从 Android 7.1 到今天的尴尬地位 ShortcutManager 这个 API 在 Android 7.1(API 25)引入,到现在已经横跨了八 2026-07-09 Android 11
kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 从 Gson 迁移说起:一个被低估的决策成本 三年前接手一个日活百万级别的 Android 项目时,团队正面临一个典型的技术债场景:Gson 的 TypeTok 2026-07-09 tool 8