Compose 的副作用 API:LaunchedEffect、DisposableEffect、SideEffect 到底什么时候用 Compose 的副作用 API:LaunchedEffect、DisposableEffect、SideEffect 到底什么时候用 Compose 的副作用 API:LaunchedEffect、DisposableEffect、SideEffect 到底什么时候用 从一个内存泄漏说起 去年维护 2026-06-18 Android 21
StorageManager 的存储空间查询,Scoped Storage 后的 API StorageManager 的存储空间查询,Scoped Storage 后的 API 「StorageManager 的存储空间查询,Scoped Storage 后的 API」 Android 10 引入 Scoped Storage 的时候,大多数开发者都在关注文件读写权限怎么改、Media 2026-06-17 Android 9
RecyclerView 的 ConcatAdapter,不同布局类型的合并实践 RecyclerView 的 ConcatAdapter,不同布局类型的合并实践 RecyclerView 的 ConcatAdapter,不同布局类型的合并实践 RecyclerView 的多类型布局一直是个老话题。从早期在单个 Adapter 里写一堆 getItemViewType() 的 s 2026-06-16 Android 17
ActivityResultContracts 替代 startActivityForResult,迁移成本 ActivityResultContracts 替代 startActivityForResult,迁移成本 ActivityResultContracts 替代 startActivityForResult,迁移成本 那个被标记为废弃的 API AndroidX Activity 1.2.0 开始 2026-06-15 Android 16
Room 的多表关联查询,@Relation 的 N+1 问题 Room 的多表关联查询,@Relation 的 N+1 问题 「Room 的多表关联查询,@Relation 的 N+1 问题」 去年维护一个本地缓存模块的时候,我踩到了 Room 的 @Relation 注解埋下的一个性能坑。当时的需求不算复杂:一个新闻 App 的离线阅读功能,文章表和标签表多 2026-06-15 Android 10
CountDownLatch 和 CyclicBarrier,并发工具怎么选 CountDownLatch 和 CyclicBarrier,并发工具怎么选 「CountDownLatch 和 CyclicBarrier,并发工具怎么选」 去年维护一个埋点上报模块的时候,我踩了个坑。场景很简单:App 启动时需要并行拉取三个配置项(AB 实验、远程开关、运营弹窗),全部完成后才 2026-06-13 Android 10
MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 去年维护一个相册应用时,我接手了一个历史遗留的查询优化任务。用户反馈在照片数量超过两万张后,按日期浏览的加载时间从毫秒级跌到了秒级,甚至偶尔触发 ANR。初步排查时,我本能地怀疑是 Rec 2026-06-13 Android 12
AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 从一次上架被拒说起 去年帮一个做效率工具的朋友处理 Google Play 上架问题,应用核心功能是自动填充表单,底层依赖 AccessibilitySer 2026-06-11 Android 28
Lint 自定义规则开发,我写完的第一条规则 Lint 自定义规则开发,我写完的第一条规则 Lint 自定义规则开发,我写完的第一条规则 从一次代码审查的重复劳动说起 去年下半年我们团队做了一次模块化重构,把原本耦合在 App 模块里的网络请求逻辑拆到了独立的 network 模块里。拆完之后我负责审查迁移后的代码,结果连续三天都在做同一件事: 2026-06-10 Android 11
ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 ViewModel 的 SavedStateHandle,进程杀死后数据还在吗 Android 开发者对 ViewModel 的熟悉程度大概仅次于 Activity 和 Fragment,但 SavedStateHand 2026-06-09 Android 28