google官方文档:
http://developer.android.com/training/best-performance.html
我只是做一下笔记和总结
性能优化方面:
- android 16ms刷新一次界面,所以避免连续运算超过16ms否则会丢帧
- 不要过度绘制(即不显示的或者被覆盖的layout不要绘制),可以采用canvas.clipRect()制定绘制区域
- 慎用透明度,因为会加大绘制花销
- 打开开发者选项的Profile GPU Rendering,可以看到GPU绘制信息
- 避免频繁执行GC:可能原因是内存抖动(频繁创建/丢弃对象)、瞬间创建大量对象。可通过Memory Monitor查看
- 避免在UI线程做内存分配操作,因为会造成内存抖动
- 随着对象停留时间的增长,依次进入Young Generatio,Old Generation,最后到Permanent Generation
- JAVA Collection的遍历,采用for index的方法效率高
- 尝试用LruCache类处理滚动的图片栏等类似问题
- Android Lint(Analyze > Inspect Code)可以检测优化代码
- 尽量减少PNG图片的大小,android推荐使用Webp
- 使用inBitmap提高bitmap重用效率
电量优化方面:
- WakeLock是耗电大户,尽快释放
- 把零散的网络请求打包进行一次操作
- android 5.0引入了Battery Historian(Battery History Tool),可以查看详细应用消耗电量情况
- 尝试使用JobScheduler(来自android 5.0),不紧急的任务交给它