Android 性能优化Tips

1. Disk I/O

SharedPreferences 扩展性不好,可以考虑使用扁平化文件+LRU 内存缓存,如果有大量keys可以考虑使用SnappyDB。

2. Networking

  • 并行和优先级http连接 Volley
  • byte buffer 复用,OkHttp

3. 解析

  • 避免使用反射进行解析
  • 解析大量流数据时使用SAX
  • 使用代码生成器解析器

4. Latency cpu 时间

  • 在应用启动时指获取必要的信息,从而优化启动时间
  • 限制在一个固定大小的线程池中执行异步任务
  • 在Acidity中尽早进行网络请求
  • 监测网络连接状态,从而调整获取数据策略
  • 尽可能地从网络获取关键数据
  • 在scroll layout中注意View的回收和循环,注意合理地实现View的回收
  • 避免重复调用系统服务,启动一次然后在内存中缓存使用
  • 避免频繁调用自定义view的invalidate 和ondraw,尽量一次调用批量udpate多个view
  • 尽量使用lint和fltten view hierarchies 来优化view
  • 避免访问类的内部成员变量

5. 图片和scrolling

  • 使用高效的图片库避免频繁GC和内存抖动
  • 使用固定大小的100_100,200_200等来提高CND的cache
  • 避免在客户端自己调整图片大小,而是直接使用合理大小的图片
  • 不用吧图片放置在分辨率敏感的文件夹下,这样的图片在运行时会被放大,有时会导致OOM

6. GC和内存

  • 缓存频繁使用的Object避免GC
  • 不用强引用activity context,使用application 的context或者弱引用,这样可以避免在activity finish之后的内存泄漏

7. 渲染

  • 优化ui线程中频繁执行的操作
  • 使用FPS检测渲染卡顿问题,并优化耗时操作

推荐阅读更多精彩内容