性能优化维度:
- 启动速度
- 度量启动速度
- 异步初始化
- 内存
- 内存抖动、泄露
- 线上内存监控
- 如何检检测不合理图片
- 卡顿
- 自动化卡顿检测
- 耗时监控
- 稳定性:
- 崩溃
- 容灾方案
还有 瘦身、布局、电量、流量 等
专项治理:
- 存储优化
- 列表卡顿优化
- webView 白屏检测
- 性能埋点
- 日志回捞
性能优化难题:
- 线上问题无从追查
- 优化效果无法长期保持
手机 App 启动时间收集方案
线下采集启动时间 adb shell
adb shell am start -W packagename/packagename.activity
- ThisTime:最后一个 Activity 启动耗时
- TotalTime:所有 Activity 启动耗时
- WaitTime:AMS 启动 Activity 的总耗时
手动打点
在 Application的attachBaseContext中记录开始时间,在用户看到页面的渲染第一帧记录结束时间。如果是根据onWindowFocusChanged来记录结束时间会比实际情况短,不够准确,可以根据第一次绑定 View 时,监听 addOnPreDrawListener 来记录结束时间
工具使用 traceview:
- 图形展示时间,调用栈
- 信息全面,所有线程
代码使用
// 开始收集
Debug.startMethodTracing()
// 结束收集
Debug.stopMethodTracing()
生成文件在 SD:Android/data/packagename/files 目录下