Android 相关文章
Native/H5 路由灰度切换:用 RedirectRouterInterceptor 实现零风险页面迁移
同一入口存在 Native 和 H5 两种实现时,如何在路由层安全地灰度切换?本文介绍 RedirectRouterInterceptor 的通用设计,通过远程配置控制落点,配合稳定散列、参数映射、兜底策略和结构化监控,让 Native 新页面平滑上线,异常时快速回滚。
Read Post
SmartDependency 源码/AAR 双模式依赖体系:让模块化工程既快又稳
在大型 Android 工程中,模块数量增长后依赖方式直接影响研发效率。本文介绍一种源码/AAR 双模式依赖体系,通过统一注册、配置切换、版本治理和 CI 约束,让开发者按需打开源码模块,同时保证发布时回归二进制真实形态。
Read Post
动态 Launcher Icon 与启动入口切换:换图标背后的工程治理
动态 Launcher icon 看似只调用一次 PackageManager,实际却涉及 Manifest 声明、状态机、回退策略、桌面兼容和灰度控制。本文介绍一种通用的动态启动入口切换方案,讲清楚为什么"换图标"的能力需要完整的入口状态管理设计。
Read Post
启动框架分阶段初始化:background/activity 两类 StartType 的设计与实践
App 启动阶段承载大量初始化逻辑,如果全部堆在 Application 中,冷启动耗时不可控。本文介绍一种分阶段初始化框架,将任务按 background 和 activity 两类 StartType 拆分,配合依赖声明、线程调度、异常降级和耗时监控,让初始化在正确时间完成必要工作。
Read Post
图片加载稳定性实战:自定义 SSL 确认与 DoH DNS 双管齐下
移动端图片加载看似简单,但用户看到的头像不显示、内容图片灰块、首屏瀑布流空白,背后往往是证书链校验失败、DNS 被污染、运营商局部解析异常等问题。本文介绍图片网络层的两项稳定性增强:自定义 SSL 确认和 DoH DNS 解析。
Read Post
图片加载统一门面:用 ImageUrlProcessor 动态裁剪与门面模式告别混乱的图片代码
图片加载是移动端体验的基础能力,但如果每个页面都直接调用底层库,URL 拼接规则、尺寸参数、预加载逻辑就会散落全项目。本文介绍一种图片加载统一门面设计,通过 ImageUrlProcessor 集中处理动态裁剪,配合门面接口、预加载调度和监控,让业务只关心展示意图。
Read Post
字节码 try-catch 插桩治理第三方 Crash:用 hookPoint 精准止血
第三方 SDK 的 crash 无法通过源码修复时,字节码 try-catch 插桩是一种工程止血手段。本文介绍 hookPoint 配置驱动的通用方案:如何在编译阶段精确命中目标方法,包裹保护逻辑,捕获非致命异常并上报,同时避免掩盖真实问题。
Read Post
异步 Inflate 管理器:用线程池预加载与安全回退加速首帧渲染
Android 页面首帧耗时不只来自网络和图片,复杂 XML 布局在主线程的 inflate 过程同样不可忽略。本文介绍一种异步 Inflate 管理器设计,通过线程池提前创建 View,用 MutableContextWrapper 替换上下文保证安全,失败时自动回退到 UI 线程同步 inflate。
Read Post
截屏检测与支持浮层:在用户最想求助的时刻提供入口
用户遇到问题时最自然的动作之一是截屏。本文介绍一种截屏检测与支持浮层设计,覆盖系统媒体监听、去抖策略、隐私保护、浮层触发和反馈链路闭环,把"用户准备离开应用去求助"的瞬间转化为站内反馈入口。
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 启动优化应该先看哪些指标?
整理 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 开始定位性能问题
面向 Android 开发者介绍 Perfetto 入门方法,覆盖 trace 抓取、关键轨道、Binder、调度、渲染和启动分析。
Read Post
AudioFlinger 在 Android 音频系统中负责什么?
解释 AudioFlinger 在 Android 音频链路中的角色,包括混音、线程、AudioTrack、低延迟播放和 AAudio。
Read Post
Bitmap 为什么容易导致 OOM?Android 图片内存模型入门
解释 Bitmap 内存占用、Java 堆与 Native 堆差异、Hardware Bitmap、采样压缩和图片加载优化。
Read Post