Android性能优化----UI流畅度优化

现实开发中用到的性能优化方案

归纳如下:

说到UI流畅度首先要知道为什么不流畅,在这之前要明白一个概念:60fps VS 16ms

所谓的60fps VS 16msGoogle是官方出品的Android性能优化典范说的——-60帧每秒是目前最合适的图像显示速度,事实上绝大多数的Android设备也是按照每秒60帧来刷新的。为了让屏幕的刷新帧率达到60fps,我们需要确保在时间16ms(1000/60Hz)内完成单次刷新的操作(包括measure、layout以及draw),这也是Android系统每隔16ms就会发出一次VSYNC信号触发对UI进行渲染的原因。也就是说这个过程只要在16s内完成,就可以展示出流畅的画面.

那么问题来了导致卡顿的原因有哪些呢?

    1.过于复杂的布局,比如RelativeLayout、LinearLayout的多层套嵌,CPU负责UI布局元素的Measure, Layout, Draw等相关运算执行并绘制在屏幕上,如果布局层次太深,会导致CPU运算过于复杂,运算时长就可能大于16s,就会导致卡顿

    2.过度绘制,比如套嵌的布局还是用相同的背景,这样就会导致一个像素在屏幕上被多次绘制,CPU的绘制时间过长也会卡顿

    3.onDraw中多次创建对象,这样就会导致频繁的GC,会出现内存抖动,触发更多的GC,导致内存不足也会造成卡顿

    4. UI线程的复杂运算,在主线程中有复杂的运算会占用时间,最终导致ANR

    5.listview

优化方案:

1.减少布局的套嵌层数,简单布局尽量使用线性布局Linearlayout,因为RelativeLayout会测量两次,相对复杂的布局可以使用约束布局ConstraintLayout(本人很喜欢使用这个布局,相信你也会喜欢的),约束布局简直是为去除嵌套量身定做的,合理使用merge和viewStub标签以及include标签

2. 删除重复的背景色或者背景图

3.自定义view中的onDraw中不要创建过多对象以及耗时操作

4.listview替换为recycleView


好啦差不多就这么多 

    原文作者:简书不简单iiii
    原文地址: https://www.jianshu.com/p/4778291faa94
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞