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结构。

 

 

posted @ 2016-09-29 10:19  阿甘的世界  阅读(124)  评论(0)    收藏  举报