1 布局渲染
主要问题: 层级复杂太深,动画,过度绘制,UI线程耗时任务 ,频繁的CG,CPU与GPU性能瓶颈,解析xml耗时。
解决方法:1 减少层级(ConstraintLayout)
2 Merge标签
3 ViewStub延迟View加载
4 删除控件中无用属性
5 移除 XML 中非必须的背景
6 自定义View优化,使用 canvas.clipRect()来帮助系统识别那些可见的区域,只有在这个区域内才会被绘制。
7 AsyncLayoutInflater,AsyncLayoutInflater是在工作线程中加载布局,加载好后会回调到主线程。
8 在onDraw中避免创建较大的对象和做耗时的操作等等。
2 内存相关
主要问题:内存抖动、内存泄露、内存溢出。
优化方法:
内存抖动:1 尽量避免在循环体内创建对象。2 自定义view的onDraw不要创建对象。
内存泄漏:匿名内部类&非静态内部类使用弱引用。Bitmap加载泄漏使用统一的库处理。