Android 性能优化

来源:互联网 发布:怎样成为数据分析师 编辑:程序博客网 时间:2024/06/08 03:32

1.布局优化

布局优化的思想很简单,就是尽量减少布局的层级,这个道理很浅显,布局的层级少了,这就意味android绘制的工作量少了,程序的性能自然就高了

如何进行布局优化,首先要删除布局中无用的控件和层级,其次有选择的使用性能较低的viewgroup,比如Relaitivelayout,如果布局既可以使用LinearLayout也可以使用Relaitivelayout,那么就采用LinearLayout,因Relaitivelayout的功能比较复杂,绘制过程会花费更多的CPU的时间

标签可以将一个制定的布局文件,加载到当前的布局文件,通过这种方法不用吧重复使用的布局文件再写一遍, 标签只支持android:layout_开头的属性,其他属性不支持android:id是特例,如果指定了id,同时包含的布局的跟标签也指定id,那么以标签id为准

标签一般和标签一起使用从而减少布局层级的,如果父布局是LinearLayout,的跟布局也是LinrarLayout那么跟布局就可以换成,减少一层无用的布局

继承了view,它非常轻量级且宽高为0,因此它本身不参与任何布局和绘制过程,viewstub意义在于按需加载所需要的文件,很多布局在正常情况下不会加载,比如网络异常页面,这个时候就没必要在初始化的时候就加载出来,通过viewstub可以做到在使用的时候在加载,提升程序初始化性能,viewstub不支持标签

绘制优化

绘制优化是指View的Ondraw方法,避免执行大量的操作,这主要指两个方面

首先,ondraw中不出创建局部对象,因为ondraw会被频繁调用,这样一瞬间就产生大量的临时对象,这不仅占用了内存,还会导致系统频繁gc,降低执行效率

另一方面ondraw不要执行耗时任务也不能执行成千上万的循环操作,尽管每次循环都是轻量级的,但是大部分魂环还是十分的抢占CPU时间片,造成view绘制不流畅
按照Google官方给出性能优化的标准,view的绘制帧率保持在60fps是最佳的,这就要求每帧的绘制时间不超过16ms,虽然程序很难保持这个时间,但是尽量降低ondraw方法的复杂度总是且还是切实有效的

内存泄漏优化

响应速度优化:
响应速度优化核心思想避免在主线程做耗时操作,响应速度过慢更多的体现在Activity的启动速度上,如果在主线程作了太多事情会导致启动activity黑屏现象,android 规定,activity如果5秒钟内无法响应屏幕触摸事件,和键盘输入事件,就会ANR,而BroadcastReceiver10秒钟还未执行完操作也会ANR

listview 和 bitmap优化

线程优化:
线程优化的思想是采用线程池,避免程序中存在大量的Thread,线程池可以重用每部县城,从而避免了线程创建和销毁带来的性能开销,同事线程池还有效的控制线程的最大并发数,避免大量线程因互相抢占系统资源从而导致阻塞的发生,因此实际开发中我们要尽量的使用线程池

一些优化的小建议

1 避免创建过多的对象

2不要用过多的枚举,枚举占用的内存空间比整形要大
3 常量使用static final 来修饰
4 采用内存缓存和磁盘缓存
5 尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏

提高程序的可维护性

这里写图片描述
这里写图片描述
这里写图片描述