Android应用的性能优化总结
来源:互联网 发布:root联网控制软件 编辑:程序博客网 时间:2024/05/16 14:13
影响性能的点
响应时间:数据的网络传输时间 + 页面的响应时间
系统处理能力:当前的CPU,内存占用情况
性能优化方法
降低页面响应时间的主要手段:a.缓存,b.算法优化, c.逻辑优化, d.需求优化, e.布局优化,f.动画优化
同步改异步:把耗时操作放到其他工作线程
提前或延迟操作:使用handler.post(),handler.postDelayed(),view.post(),view.postDelayed()等进行操作延迟或提前
1. 布局优化---减少不必要的布局嵌套或过多的节点
- <include>标签
- <merge> 标签
- 第一次不需要显示的view,设置view为Gone
- 使用RelativeLayout代替LinearLayout
- view的adapter里,使用viewholder和全局的变量,防止多次inflate
- ListView一定要给高度,使用xxdp或fill_parent
2. 动画优化
- 尽量减少在动画中做布局重绘,避免使用requestLayout(),invalidate(),postInvalidate()
- 尽量使用AnimationListener,以便控制在动画开始或结束后操作
- 连续动画,尽量使用ObjectAnimator
3.代码优化
- 数据结构使用
- 如果使用List,建议使用ArrayList
- 如果使用的Map的key为int型,建议使用Android提供的SparseArray
- 如果内存紧张,建议使用WeakHashMap
- 如果不想添加重复元素,建议的使用HashSet,并且HashSet的查询效率也比较高
- 如果多线程使用Map,建议使用ConcurrentHashMap
- 避免创建不必要的对象
- 对象频繁的创建和销毁,对内存使用率会很高,容易造成应用程序卡顿
- 合理使用static
- 常量字段要声明为“static final”
- 不要将视图控件声明为static,因为View对象会引用Activity对象,当Activity退出时其对象本身无法被销毁,会造成内存溢出
- 避免使用内部的setter/getter方法
- 除了外部访问,内部访问尽量避免使用setter/getter方法
- 避免使用浮点数,能用整形,尽量用整形
- As a rule of thumb, floating-point is about 2x slower than integer on Android-powered devices.
- 集合循环尽量使用for each
- 尽量使用jdk或android sdk提供的函数,实现所需功能
4.其他优化
- 逻辑优化
- 理清程序的逻辑,避免不要的操作
- 需求优化
- 处理优化
- 异步,多线程
- 提前或延迟操作
5.优化工具
- 布局优化 — HierarchyViewer
- 内存优化 — Mat
- 性能优化利器 — Traceview
性能优化的思考
性能优化是一个特大的话题,而且是一个持续的过程。
如何避免出现性能问题,需要在根据场景去做合理的设计和编码。
出现性能问题后,性能优化这个应该需要同学们能掌握基本的处理技巧,时时的去做优化,让应用成为一个真正的好应用。
编辑
0 0
- Android应用的性能优化总结
- Android Studio下的应用性能优化总结--布局优化
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结--布局优化
- Android Studio下的应用性能优化总结-内存优化
- Android Studio下的应用性能优化总结--布局优化
- Android Studio下的应用性能优化总结-内存优化
- android应用的性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- Android应用性能优化
- 博客文章参与SEO排名应该这样做
- I/O 使用率统计
- android中关于textview字数显示的问题
- 揭秘域名劫持反向代理之黑帽SEO技术
- nginx相关
- Android应用的性能优化总结
- 常用代码小记
- ARC与MRC转换
- Linux Top命令详解
- Combination Sum II
- BZOJ 3720 Gty的妹子树 块状树
- Ubuntu14.04配置中文输入法
- 浏览器默认绑定事件
- 浅谈HTML5中的各种事件