现在的app到处都充斥着华丽的动画、复杂的转化还有自定义View,然而用户体验必须尽可能直观且类似。以下这些范例将会帮助你做出一个流畅的、快速响应的、甚至可能减少电量损耗的app,这些范例由一些可以提升整体应用表现的微优化组成。 

避免“坏”表现 
  • 避免堵塞主线程
  • 避免可能引发大范围重绘的不必要的重绘
  • 用 RelativeLayout 来减少布局层级
  • 避免在 LinearLayout 中使用嵌套的 weight 属性(因为weight属性会使每个子View进行两次measure)
  • 避免使用没有恰当处理的自定义View
  • 避免创建没必要的对象
  • 将常量声明为 static final(static比普通变量快 15% - 20%)
  • 使用基本数据类型(Integer、Float 比基本类型慢两倍)
  • 避免内部的 getter 和 setter(直接访问属性可以快3倍)
  • 使用改进的循环语法【译者注:这里应该是指for each循环】
  • 对私有的内部类考虑使用包访问级别代替私有访问级别
  • 谨慎使用native方法

自定义View 
  • 遵循KISS原则
  • 在布局中使用merge标签来作为根标签(避免额外的ViewGroup)
  • 使用include标签(便于布局的复用)
  • 避免不必要的布局
  • 不要在onDraw中申请内存或者做复杂逻辑
  • 去除不必要的invalidate()调用
  • 考虑创建自己的ViewGroup
  • 用RecyclerView替代ListView和GridView

避免内存抖动 
  • 不要申请大量不必要的对象内存:
  •    1, 不可变对象:String 
       2, 自动装箱:Integer, Boolean...
  • 考虑使用对象池并缓存来减少内存抖动
  • 留心enum类型的开销(一个指向枚举类型的引用就要占据4个字节)

避免内存泄漏