1.绘制优化
1.1 绘制原理
1.2 卡顿原因
1.3 卡顿检测工具
1.3.1 TraceView
1.3.2 SysTrace
1.3.3 HierarchyViewer
1.3.4 Profile GPU Rendering
1.3.5 AndroidLint
1.4 第三方工具
1.5 启动优化
1.5.1 UI优化
1.5.2 启动逻辑优化
2.内存优化
2.1 内存检测工具
2.2 内存抖动
2.2.1 概念
2.2.2 表现
2.3 数据类型
2.4 图片优化
3.存储优化
4.稳定性优化
4.1 代码审查
4.2 Crash监控
4.3 提高进程存活率
5.耗电优化
5.1 检测工具
5.2 耗电模块
5.3 优化
5.4 Job Scheduler
6.安装包优化
6.1 资源优化
6.2 代码优化
6.3 代码压缩
6.4 代码混淆
6.5 图片优化
6.6 ProGuard
6.7 Android Lint
FPS
- 绘制一帧时间太长
- UI线程太忙了,丢帧了
- 概念:方法调用关系、调用时长追踪,已经过时
- 发展:取而代之CPUProfiler
自定义:
Debug.startMethodTracing("MYTAG");
Debug.stopMethodTracing();
- 概念:性能数据的采集和分析工具【已经过时】
- 发展:Android9.0系统自带SystemTrace】
- 自定义:
Trace.beginSection("MyTrace");
Trace.endSection();
- 概念:View层级检测【已过时】
- 发展:Layout Inspect取而代之
渲染柱状图,红色就过渡了
- 层级检测
- view个数检测
- TimeMonitor
- BlockCanary
- 分布加载
- 异步加载
- 延期加载
- Memory Monitor
- MAT
- LeakCanary
在短时间内有大量的对象创建和回收,出现内存的忽高忽低
内存图成锯齿状
- SparseArray
- ArrayMap
- SharedPrefenence
- File
- SQLite
- ContentProvider
- 何时审查
- 审查什么
公共模块
业务模块
- 谁来审查
团队审查
模块负责人审查
结对审查
自查
- Java层Crash监控
- Native层Crash监控
- Crash上报机制
- AlarmReceiver
- BootReceiver
- SyncAdapter
- Batterystats
- Battery Historian
- 显示
- 网络
- 耗电
- 计算优化
- WakeLock使用不当
- 在合适的时间
- 合适的电量
- 合适的网络条件
移除无效的类,属性,方法
把类名、方法名、属性名替换为一到两个字母