Android 技术文章归档
异步 Inflate 管理器:用线程池预加载与安全回退加速首帧渲染
Android 页面首帧耗时不只来自网络和图片,复杂 XML 布局在主线程的 inflate 过程同样不可忽略。本文介绍一种异步 Inflate 管理器设计,通过线程池提前创建 View,用 MutableContextWrapper 替换上下文保证安全,失败时自动回退到 UI 线程同步 inflate。
Read Post
截屏检测与支持浮层:在用户最想求助的时刻提供入口
用户遇到问题时最自然的动作之一是截屏。本文介绍一种截屏检测与支持浮层设计,覆盖系统媒体监听、去抖策略、隐私保护、浮层触发和反馈链路闭环,把"用户准备离开应用去求助"的瞬间转化为站内反馈入口。
Read Post
深入 Compose Multiplatform 桌面端实战:从 JVM 窗口管理到平台互操作的跨桌面 UI 工程全链路
从 Electron 迁移到 Compose Desktop 的实战复盘,覆盖 JVM 窗口系统、菜单栏、拖拽、系统托盘、平台互操作及打包分发全链路,启动速度提升 60%,内存降低 70%,适合 Android/Kotlin 团队构建桌面工具。
Read Post
网络诊断体系设计:让每一次失败都可追溯、可解释
移动端网络问题最难处理的地方不是失败本身,而是失败之后很难还原现场。本文拆解一种通用的网络诊断体系设计:如何定义诊断分层、采集请求上下文、编排诊断任务、输出可读报告,同时控制隐私和性能成本。
Read Post
自研缓存策略体系:用 FirstCache/FirstNet/OnlyNet/Timeout 终结混乱的缓存代码
缓存策略看起来只是"先读缓存还是先请求网络"的选择,实际落地却会影响页面速度、弱网体验、数据一致性和代码复杂度。本文介绍一种自研缓存策略体系,用统一策略枚举、CacheManager 读写和 Flow 数据流封装,让页面只订阅状态,不拼装缓存细节。
Read Post
路由预取与请求合并:让首屏数据"提前跑"且"不重复跑"
页面打开速度不只取决于接口耗时,还取决于请求发起得够不够早、重复请求能不能被压住。本文介绍 PrefetchRouterInterceptor 在路由阶段提前发起高确定性请求,配合 MergeHolder 在网络层合并重复请求,一条链路解决"发得早"和"别重复发"两个问题。
Read Post
深入 Android Simpleperf 火焰图分析:从 CPU 采样到性能瓶颈定位的全链路
本文深入解析 Android Simpleperf 工具的原理与实战,从火焰图生成、调用栈分析到冷启动优化、多线程 CPU 分配,并结合 Systrace 构建互补的性能定位方法论。
Read Post
Android App 启动优化应该先看哪些指标?
(Updated on )
整理 Android 启动优化的关键指标、阶段拆分、Perfetto trace 观察点和线上治理优先级。
Read Post
Android Binder 是什么?一篇看懂 Binder 通信模型
用问题驱动的方式解释 Android Binder 是什么、为什么系统服务依赖 Binder、一次跨进程调用会经过哪些角色。
Read Post
Android CI/CD 质量门禁应该包含什么?
整理 Android CI/CD 中构建、测试、Lint、签名、性能基准、发布和回滚的质量门禁设计。
Read Post
Android Gradle 构建慢怎么分析?
整理 Android Gradle 构建慢的分析路径,包括 Build Scan、Configuration Cache、KSP、任务依赖和缓存命中。
Read Post
Android Perfetto 怎么入门?从一条 Trace 开始定位性能问题
(Updated on )
面向 Android 开发者介绍 Perfetto 入门方法,覆盖 trace 抓取、关键轨道、Binder、调度、渲染和启动分析。
Read Post
AudioFlinger 在 Android 音频系统中负责什么?
解释 AudioFlinger 在 Android 音频链路中的角色,包括混音、线程、AudioTrack、低延迟播放和 AAudio。
Read Post
Bitmap 为什么容易导致 OOM?Android 图片内存模型入门
解释 Bitmap 内存占用、Java 堆与 Native 堆差异、Hardware Bitmap、采样压缩和图片加载优化。
Read Post
Compose 为什么会频繁重组?从 Stability 到状态读取位置
(Updated on )
解释 Jetpack Compose 频繁重组的常见原因,包括不稳定参数、状态读取位置、derivedStateOf 误用和列表项设计。
Read Post
DataStore 和 SharedPreferences 应该怎么选?
对比 SharedPreferences、Preferences DataStore 和 Proto DataStore 的适用场景、线程模型、类型安全和迁移策略。
Read Post
Glance 和 RemoteViews 有什么区别?
解释 Android Glance AppWidget 与 RemoteViews 的关系、差异、适用场景和迁移判断。
Read Post
Paging3 RemoteMediator 适合什么场景?
解释 Paging3 RemoteMediator 的定位、网络数据库分页协作、缓存优先列表和常见错误用法。
Read Post
RecyclerView 四级缓存是哪四级?从复用链路理解列表性能
解释 RecyclerView 四级缓存、ViewHolder 复用顺序、RecycledViewPool 和 Prefetch 对滑动性能的影响。
Read Post
Room 返回 Flow 为什么能自动更新?
解释 Room、InvalidationTracker、SQLite 表变更通知与 Kotlin Flow 自动重新查询机制。
Read Post