Android 性能优化篇

 第一,优化XML布局

1,布局嵌套,原因: 因为xml解析是一个递归调用解析,由外层往内层解析,每层执行一边。而且绘制的时候会影响绘制效率。

建议:使用ConstraintLayout约束布局,一层基本上能绘制任何布局,需要努力学习一下。

2,布局选择,原因:RelativeLayout onMeasure会测量多次,尽量使用linearLayout和FrameLayout代替,linearLayout中如果有权重也会测量多次。(如果嵌套和布局选择上面 ,更倾向于减少嵌套)

3,ViewStub 原因:有些View是根据数据情况的展示,有可能根本没有机会展示,所以要使用ViewStub(具体教程百度一大把)

4,使用merge 原因:可以用merge 代替最外层的布局,减少布局嵌套。

第二 ,View绘制优化

1,onDraw 方法不要创建过多的对象,原因:onDraw方法可能会调用多次,创建对象是比较消耗性能的,会引起gc,就会导致卡顿。

2,不要在onDraw方法中做耗时操作,原因:16ms绘制时间,如果没有绘制完成就会丢帧,看上去就会卡顿。

第三,内存泄漏

1,容易引起内存泄漏的几种情况,单例,非静态的内部类,线程,cusor,handler,属性动画(生命周期长或者不确定的都可以能引起)

2,做好生命周期的管理,不要生命周期长的对象持有Activity,利用 leakcanary定位 存在的内存泄漏问题,养成良好的编码习惯

第四,避免在主线程做耗时的操作,可以开启到子线程去做。

第五,listView 的优化,

1,现在基本上都用recycleView,如果你还在使用listView 一定要注意优化问题 ,convertview复用问题,findviewByid,滚动加载图片的问题等等

第六,bitmap 的优化

1,加载图片的时候防止oom,二次采样 控制好bitmap的大小,尽量采用rgb565,使用完毕之后记得释放 

第七 ,线程

1,如果有必要,使用线程池,不要频繁创建对象。

 

总结一下 ,

第一就是响应速度方面,

尽量不要频繁创建对象,尽量不要做耗时操作,减少嵌套

第二就是内存方面,

防止内存泄漏和内存益处

第三电量方面

做到及时的释放资源,没有必要的操作尽量减少。

 

 

 

你可能感兴趣的:(Android)