Android性能优化有多种方式,在多个方面都有体现:
-
布局优化:布局优化的思想就是减少布局的层级,使用
<include/>, <merge/> , <ViewStub/>
来优化布局。 -
绘制优化:绘制优化是指在
View
的onDraw()
方法内避免执行大量的操作。不要在在onDraw()
方法内创建大量的局部对象,这不仅会占用过多内存还会频繁gc
,降低程序的效率;不要在onDraw()
方法内执行耗时操作,绘制时间要保持在16ms以内,防止界面卡顿。 -
内存泄漏优化:内存泄漏,是指一段内存在该释放的时候却得不到释放,导致App内内存越用越少。一,静态变量导致的内存泄漏,静态变量的生命周期是整个程序的生命周期,所以不要让静态变量引用生命周期比程序生命周期短的对象;二,单例模式导致的内存泄漏,单例模式对象引用局部对象导致内存泄漏;三,属性动画或线程导致的内存泄漏,属性动画和线程不去主动停止,会一直执行下去的,要在适当的时候停止属性动画和线程。
-
响应速度优化和
ANR
:响应速度优化是指避免在主线程做耗时操作,因为操作都是在主线程响应的 ;解决ANR
问题,如果不能在代码中找到导致ANR
的原因,则可以分析traces.txt
找到原因,traces.txt
文件会记录导致ANR
的原因的。 -
ListView
和Bitmap
优化:ListView
采用convertView+ViewHolder
缓存策略,来避免在getView()
中执行耗时操作,三级缓存,异步加载,不要在滑动的时候去加载图片,开启硬件加速,来加速渲染;Bitmap
的优化则是加载压缩后的Bitmap
,采样率。 -
线程优化:不要开启大量线程,采用线程池。
参考 《Android开发艺术探索》