一、布局优化
尽量减少布局的层级,有选择的使用功能较为复杂,性能较低的viewgroup,如:relativeLayout,但推荐使用relativiLayout来替换多重嵌套的linearLayout,减少布局层级。推荐使用<include>,<merge>和ViewStub来布局。
二、绘制优化
避免在view的onDraw中进行大量的操作。主要体现于两个方面:
不要在onDraw中创建新的局部对象,因为onDraw可能会被频繁的调用,这时将会产生大量的临时对象,不仅会占用更多的内存,还会频繁的引起系统的gc,降低执行效率。
不要在onDraw中执行耗时操作,或大量循环,尽管每次循环都很轻量级,但对大量循环仍然会抢占很多时间片,导致绘制不流畅。
三、内存泄漏优化
什么是内存泄漏:内存泄漏只动态申请的内存空间在使用完毕后没有及时释放,从而导致程序所需内存越来越多,严重情况会导致oom。
内存泄露场景:
资源使用完毕没有关闭:数据库cursor,流等
静态变量、单例持有对象的引用会使该对象无法销毁
无限循环的属性动画也会使activity无法销毁
context被生命周期常于activity的对象持有导致activity无法销毁
四、线程优化
尽量采用线程池,避免程序中存在大量的Thread。线程池会对内部的线程进行复用,还可以控制线程的最大并发数量。
五、listview以及bitmap的优化
内容较多,占坑待补