用户对一个 App 的第一印象来自启动速度,长期使用体验则取决于流畅度和电量消耗。本文整理一份可逐项检查的 Android 性能优化清单,覆盖从冷启动到后台运行的完整生命周期。

启动优化:每一毫秒都重要

Google 建议冷启动时间控制在 500ms 以内(到首帧渲染)。优化手段:

  1. 延迟初始化:非关键 SDK(统计、推送、地图)放到 Application.onCreate() 之后的 IdleHandler 或协程中
  2. Baseline Profile:用 Macrobenchmark 生成 AOT 编译配置,启动提速 20–30%
  3. 闪屏优化:Android 12+ 使用 SplashScreen API,避免自定义闪屏页额外耗时
  4. ContentProvider 审计:第三方 SDK 通过 ContentProvider 自动初始化,用 InitializationProviderremove 禁用非必要项
<!-- AndroidManifest.xml 中禁用不需要的自动初始化 -->
<provider
    android:name="androidx.startup.InitializationProvider"
    tools:node="merge">
    <meta-data
        android:name="com.example.SomeSdkInitializer"
        tools:node="remove" />
</provider>

卡顿治理:主线程零容忍

Android Vitals 将 ANR 率超过 0.47% 的应用标记为「不良行为」。常见主线程阻塞源:

使用 StrictMode 在 Debug 构建中检测主线程磁盘/网络访问,使用 Perfetto / Systrace 分析帧耗时。

内存管理

OOM 是 Android 应用被系统杀死的头号原因:

  1. 图片加载:Coil/Glide 按目标尺寸采样,列表中及时 dispose
  2. 内存泄漏:LeakCanary 检测 Activity/Fragment 泄漏,注意静态引用和未取消的协程
  3. 大对象:单个 Bitmap 不超过屏幕像素数 × 4 字节,必要时分块加载
  4. onTrimMemory:响应系统内存压力回调,释放非必要缓存

电量与后台行为

Android 14+ 对后台行为限制更严格:

网络与包体积

监控体系

上线后持续监控比一次性优化更重要:

  1. Firebase Performance:自动采集启动、网络、帧率
  2. Android Vitals:Google Play 控制台查看 ANR、崩溃、唤醒锁
  3. 自定义埋点:关键页面 TTI(Time to Interactive)和业务操作耗时

小结

Android 性能优化没有银弹,但有清晰的优先级:启动 → 卡顿 → 内存 → 电量 → 包体积。建立基准测试、逐项优化、持续监控,比追求一次性完美更有价值。