Android应用的性能优化总结

来源:互联网 发布:root联网控制软件 编辑:程序博客网 时间:2024/05/16 14:13

影响性能的点

  1. 响应时间:数据的网络传输时间 + 页面的响应时间

  2. 系统处理能力:当前的CPU,内存占用情况

性能优化方法

  1. 降低页面响应时间的主要手段:a.缓存,b.算法优化, c.逻辑优化, d.需求优化, e.布局优化,f.动画优化

  2. 同步改异步:把耗时操作放到其他工作线程

  3. 提前或延迟操作:使用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.代码优化

  1. 数据结构使用
    • 如果使用List,建议使用ArrayList
    • 如果使用的Map的key为int型,建议使用Android提供的SparseArray
    • 如果内存紧张,建议使用WeakHashMap
    • 如果不想添加重复元素,建议的使用HashSet,并且HashSet的查询效率也比较高
    • 如果多线程使用Map,建议使用ConcurrentHashMap
  2. 避免创建不必要的对象
    • 对象频繁的创建和销毁,对内存使用率会很高,容易造成应用程序卡顿
  3. 合理使用static
    • 常量字段要声明为“static final”
    • 不要将视图控件声明为static,因为View对象会引用Activity对象,当Activity退出时其对象本身无法被销毁,会造成内存溢出
  4. 避免使用内部的setter/getter方法
    • 除了外部访问,内部访问尽量避免使用setter/getter方法
  5. 避免使用浮点数,能用整形,尽量用整形
    • As a rule of thumb, floating-point is about 2x slower than integer on Android-powered devices.
  6. 集合循环尽量使用for each
  7. 尽量使用jdk或android sdk提供的函数,实现所需功能

4.其他优化

  1. 逻辑优化
    • 理清程序的逻辑,避免不要的操作
  2. 需求优化
  3. 处理优化
    • 异步,多线程
    • 提前或延迟操作

5.优化工具

  1. 布局优化 — HierarchyViewer
  2. 内存优化 — Mat
  3. 性能优化利器 — Traceview

性能优化的思考

性能优化是一个特大的话题,而且是一个持续的过程。
如何避免出现性能问题,需要在根据场景去做合理的设计和编码。
出现性能问题后,性能优化这个应该需要同学们能掌握基本的处理技巧,时时的去做优化,让应用成为一个真正的好应用。
编辑

0 0
原创粉丝点击