Android 性能优化
1. 界面绘制原理
关键词:
frame Rate
Refresh Rate
16ms
Resterization
UI绘制流程 measure-layout-draw
2. GC
三级
3. 网络请求优化
Keyword:
Prefetch
Compress
Batching
a. 减少移动网络被激活的时间与次数
b. 压缩
c. 输数据
d. 使用 GCMNetworkManager实现批处理
4. 电量优化
a. 减少使用蜂窝网络请求次数
b. 根据不同场景使用不同的定位方式
5. 动画优化
6. LInt使用
7. 线程优化
UI线程超过5秒会出现ANR
可以使用Tool: Strict Mode去识别
8. for循环效率要优于迭代器
9. 测试
a. 使用Strict Mode工具监测程序潜在隐患
10. 自定义View
a. Useless calls to onDraw():我们知道调用View.invalidate()会触发View的重绘,有两个原则需要遵守,第1个是仅仅在View的内容发生改变的时候才去触发invalidate方法,第2个是尽量使用ClipRect等方法来提高绘制的性能。
b. Useless pixels:减少绘制时不必要的绘制元素,对于那些不可见的元素,我们需要尽量避免重绘。
c. Wasted CPU cycles:对于不在屏幕上的元素,可以使用Canvas.quickReject把他们给剔除,避免浪费CPU资源。另外尽量使用GPU来进行UI的渲染,这样能够极大的提高程序的整体表现性能。
最后请时刻牢记,尽量提高View的绘制性能,这样才能保证界面的刷新帧率尽量的高。
11. 图片优化
JPEG比PNG小 Google推出新的图片格式Webp
使用inBitmap属性,重用bitmap内存区域 可使用对象池技术
使用inSampleSize属性 缩放图片优于createScaledBitmap()
加载bitmap的开源库 https://github.com/bumptech/glide
12. 代码技巧
a. 以下两种情况考虑使用ArrayMap
对象个数的数量级最好是千以内;
数据组织形式包含Map结构。

浙公网安备 33010602011771号