60fps--16ms/帧
准则:尽量保证每次在16ms内处理完所有的CPU与CPU计算、绘制、渲染等操作,否这会造成丢帧卡顿问题
人为在UI线程做了轻微的耗时操作
布局Layout过于复杂,无法再16ms内完成渲染
同一时间动画执行次数过多,导致CPU负载过重
人为在UI线程做了轻微的耗时操作
布局Layout过于复杂,无法再16ms内完成渲染
同一时间动画执行次数过多,导致CPU负载过重
View的过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU负载过重
View频繁的触发measure,layout。导致measure,layout累计耗时过多及整个View频繁的重新渲染
内存频繁触发GC过多(内存抖动)
解决方法:
1、布局优化;尽量使用include、merge、viewstub 标签;尽量不存在冗余嵌套及过于复杂布局;尽量使用gone代替invisiable属性
2、listview与adapter优化;getView中尽量复用view;
3、背景与图片优化;尽量减少不必要的背景设置;图片尽量压缩处理显示;
4、自定义view等绘图与布局优化;尽量避免在draw、measure、layout中做过于耗时及耗内存操作,尤其是draw方法中,尽量减少draw、measure、layout等执行次数;
5、避免ANR;不要在UI线程中做耗时操作,遵守ANR规避守则,譬如多次数据库操作等;