Android 全方位性能优化合集
——启动速度 · 内存泄漏 · 卡顿 · 包体积
性能优化的本质是:在有限资源下,让用户体验更快、更稳、更省电、更流畅。
一、启动速度优化(Launch Time)
1. 启动类型与指标
启动方式 | 说明 |
|---|---|
冷启动 | App 进程不存在,从零创建 |
温启动 | 进程存在但 Activity 被销毁 |
热启动 | 进程 + Activity 均存活 |
✅核心指标
冷启动 ≤ 800ms(推荐)
Time to Full Display(TTFD)
2. 常见启动瓶颈
Application 初始化过重
主线程 IO / 反射 / 同步 Binder
首屏 Activity 布局层级过深
第三方 SDK 同步初始化
3. 实战优化方案
✅ Application 瘦身
class MyApp : Application() { override fun onCreate() { super.onCreate() initCoreSync() initAsync() } }必须同步:日志、Crash、基础配置
可异步:推送、统计、IM
✅ 启动器模式(Startup Library)
InitializerManager() .add(LogInit()) .add(PushInit(), async = true) .start()✅ 首屏优化
使用Launch Theme
<style name="AppTheme.Launch"> <item name="android:windowBackground">@drawable/bg_launch</item> </style>延迟加载非首屏 Fragment
ViewStub 懒加载
✅ 监控手段
adb shell am start -WPerfetto / Systrace
埋点:onCreate → onWindowFocusChanged
二、内存泄漏优化(Memory Leak)
1. Android 内存常见问题
Activity / Fragment 泄漏
Handler / Thread 未释放
单例持有 Context
匿名内部类引用外部类
2. 典型泄漏场景
❌ 错误示例:
class MyActivity : AppCompatActivity() { private val handler = object : Handler(Looper.getMainLooper()) { override fun handleMessage(msg: Message) {} } }✅ 正确做法:
private val handler = Handler(Looper.getMainLooper())3. 检测工具
工具 | 用途 |
|---|---|
LeakCanary | 自动检测内存泄漏 |
Android Studio Profiler | 实时内存分析 |
MAT | HPROF 深度分析 |
4. 优化原则
单例不持有 Activity Context
使用
ApplicationContext及时移除监听:
onDestroy()避免静态 View / Drawable
三、卡顿优化(Jank / Frame Drop)
1. 卡顿本质
主线程阻塞 > 16ms
UI 渲染超时
GC 频繁触发
2. 常见原因
主线程 IO
大图加载
嵌套 RecyclerView
过度绘制(Overdraw)
3. 优化方案
✅ 主线程治理
禁止主线程:
网络请求
数据库读写
JSON 解析
✅ 布局优化
ConstraintLayout 替代多层嵌套
减少
wrap_content关闭无用背景
android:background="@null"✅ 渲染优化
开启 GPU Overdraw 检查
使用
View.setLayerType()谨慎列表使用 DiffUtil
✅ 监控
FrameMetrics
Choreographer.FrameCallback
BlockCanary / Matrix
四、包体积优化(APK Size)
1. 包体积影响
下载转化率
安装失败率
低端机 OOM 风险
2. 优化维度
✅ 资源优化
删除无用资源(Lint)
图片转 WebP
使用 VectorDrawable
语言资源裁剪
resConfigs "zh"✅ SO 优化
arm64-v8a only
动态下发 so(插件化)
✅ R 文件优化
开启 R8 / Proguard
移除 unused resources
✅ AAB(Android App Bundle)
Google Play 强制推荐3. 自动化监控
ApkChecker
Matrix ApkSize
CI 包体积阈值告警
五、综合优化体系
1. 性能指标大盘
维度 | 指标 |
|---|---|
启动 | 冷启动耗时 |
内存 | PSS / Leak 次数 |
流畅度 | FPS / Jank |
包体 | APK / AAB 大小 |
2. 持续优化机制
性能门禁(CI)
灰度监控
线上 APM(Matrix / Firebase)
版本回归对比
六、总结
性能优化不是一次性任务,而是持续工程。
✅ 启动快
✅ 不泄漏
✅ 不卡顿
✅ 包体小
真正优秀的 Android App,是在业务迭代与性能稳定之间取得平衡。