1,降低布局结构的深度;
2,重复的布局用include独立出来;
3,merge标签代替布局文件中的根节点,减少布局的嵌套;
4,将动态加载的布局用ViewStub包包含,不需要的时候设置为View.GONE,将其隐藏起来;
5,用hierarchy viewer优化;
一,layout过于复杂导致丢帧,HierarchyViewer查找activity是否过于复杂,也可以使用手机设置里面的开发者选项,打开Show GPU Overdraw等选项进行观察。
你还可以使用TraceView来观察CPU的执行情况,更加快捷的找到性能瓶颈;
二,背景重复绘制,Overdraw有时候是因为你的UI布局存在大量重叠的部分,还有的时候是因为非必须的重叠背景;
三,你需要避免在for循环里面分配对象占用内存,需要尝试把对象的创建移到循环体之外,自定义View中的onDraw方法也需要引起注意,每次屏幕发生绘制以及动画执行过程中,onDraw方法都会被调用到,避免在onDraw方法里面执行复杂的操作,避免创建对象。对于那些无法避免需要创建对象的情况,我们可以考虑对象池模型,通过对象池来解决频繁创建与销毁的问题,但是这里需要注意结束使用之后,需要手动释放对象池中的对象
本文摘自 :https://blog.51cto.com/u