一 常见性能问题:
1.1 内存泄露
Generational Heap Memory模型
1.2 频发GC:
1.3 耗电问题
1.4 OOM问题
二 导致性能问题原因:
2.1 人为在ui线程中做了轻微的耗时操作,导致ui线程卡顿
2.2 layout过于复杂,无法在16ms完成渲染
最新使用ConstraintLayout替代RelativeLayout
2.3 同一时间执行的动画过多,导致CPU或者GPU负载过重
2.4 view过度绘制的问题
2.5 GC过多问题
2.6 资源加载导致执行缓慢
2.7 工作线程优先级设置不对,导致和ui线程抢占cpu时间。
2.8 静态变量
三 既然遇到问题分析也有了,那么接下来,自然而然是如何使用各种刀棒棍剑来解决这些问题了
3.1 GPU过度绘制,定位过度绘制区域
3.2 主线程耗时操作排查
3.3 对于measure,layout耗时过多的问题
3.4 leakcany
3.5 onDraw里面写代码需要注意
3.6 json反序列化问题
3.7 viewStub&merge的使用
3.8 加载优化
3.9 刷新优化
3.10 动画优化
3.11 耗电优化
四 接下来的一些内容就比较轻松了,是关于一些代码的建议
4.1 正确使用Alarm
4.2 节制的使用Service
4.3 当界面不可见时释放内存
4.4 使用优化过的数据集
4.5 谨慎使用抽象编程
4.6 Try/catch应放到代码最外层
4.7 System.arraycopy()代替for循环复制
4.8 SpareArray替代HashMap
4.9 列表滚动停止之后加载图片
4.10 注意使用wrap_content
4.11 自定义View优化
4.12 对定时任务尽量使用AlarmManager,而不是sleep或timer进行管理
网友评论