一、布局优化
减少布局层级
布局层级越高越复杂消耗性能就越大,所以在设计布局时尽量缩小布局层级数
viewgroup性能
常用的像LinearLayout、FrameLayout、RelativeLayout等,其中RelativeLayout消耗性能最多,所以这里能使用LinearLayout或FrameLayout的时候尽量使用这两种,如果2种都需要同时使用,则RelativeLayout性能会好于两种结合的布局形式。
总结起来就是:
LinearLayout = FrameLayout < RelativeLayout
LinearLayout + FrameLayout > RelativeLayout
标签用法
在xml布局中,可以使用标签也可以优化布局,比如<include>,<merge>, 以及viewstub的使用等。
二、绘制优化
ondraw方法避免耗时
- 在ondraw方法中不要使用new等创建对象操作,ondraw方法会执行多次,因此会导致多次重复创建对象,占用系统资源。
- 在ondraw中不要进行耗时操作,如ondraw方法名,此方法用于绘制,其他耗时操作可在其他方法中进行。
注: 流畅的绘制为60fps,也就是在ondraw方法中每帧绘制不超过大概16ms左右。
三、内存泄漏优化
代码优化
- 代码优化:
· 静态变量的使用
· 单例模式需要及时在activity中释放(单例的生命周期绑定在application)
· 属性动画的释放,属性动画一定要在使用完或者activity中的ondestory方法中释放
AS内存工具使用
这个工具就不多说了,as中自带的工具也很好用可以实时监控你的程序的内存情况。
image.png
image.png
主线程耗时操作避免(这里就不深入讲了)
listview与bitmap
listview: 无非就是viewholder的使用,item复用.
bitmap: 释放、管理等(后面有机会会专题讲)
四、线程优化
线程池的使用
线程池的使用可以避免你的程序有多个线程执行的时候,大幅度减少内存占用,因为线程池中可以对线程资源进行复用不会每次都创建一个新的线程去跑,所以如果项目需要大量线程同时跑,或者频繁跑的情况,最好使用线程池。
五、建议
1.避免创建过多的对象
2.枚举不要过多的使用,内存占用空间较大
3.常量使用static final修饰
4.使用android特有的数据结构:sparseArray、pair,性能更好
5.适当使用软引用
6.静态内部类使用,避免潜在内部类导致内存泄漏
网友评论