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 尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄漏
提高程序的可维护性
- 【Android】android性能优化
- 【Android】Android性能优化
- 【Android】Android性能优化
- 【Android】【性能优化】 Android 性能优化
- Android性能优化---布局优化
- Android性能优化---布局优化
- android 内存优化 性能优化
- android 内存优化 性能优化 .
- Android 性能优化、内存优化
- Android 性能优化、内存优化
- android性能优化--overdraw优化
- android性能优化---数据库优化
- android性能优化--布局优化
- Android 性能优化、内存优化
- android性能优化--overdraw优化
- Android性能优化-布局优化
- Android性能优化-布局优化
- Android性能优化-数据优化
- Robot Framework自动化测试基础实战课程 4
- Python3操作MySQL数据库
- Android图表库MPAndroidChart(二)双轴图
- Mac-硬件内存爆满囧么办,来这里看看~
- 机器学习——聚类(clustering):K-means算法(非监督学习)
- Android 性能优化
- SOQLでのリレーションの辿り方
- 初窥nodejs(七) ——cookie$session
- #CCF准备一年日常刷题#201312-3 最大的矩形
- 有关gis一些在线资源
- [bigdata-116] tomcat官网文档-翻译-不完整
- Angularjs增删改查,路由
- linux服务器搭建两个tomcat实战教程
- 小米推送测试脚本