UI卡顿

UI卡顿原理

60fps->16ms程序的大部分操作要在16ms内完成,listview 的item层叠了太多,有复杂动画导致。每一次虚拟机在GC的时候所有的线程也会停止。

Overdraw过渡绘制,多层次ui结构,某些像素区域被绘制很多次。GPU蓝 绿 红色 减少红色。多次层叠的view的background。

原因分析

1.人为在UI线程做了轻微耗时操作,导致UI卡顿。没有引起ANR。

2.布局Layout过于复杂,无法再16ms内渲染,背景布局不能重叠。

3.同一时间动画执行次数过多,导致cpu gpu负载过渡。

4.View频繁绘制导致measure layout,耗时累积过多,整个view频繁渲染。

5.内存频繁GC过多,导致暂时阻碍渲染操作。

6.冗余资源和逻辑导致加载和执行缓慢。

7.ANR。

解决办法

1.布局优化, include merge,尽量不存在冗余嵌套,适当的设置gone,invisible,使用item复杂的情况下使用自定义view。

2.列表及adapter,使用convertView。

3.背景和图片内存分配优化,图片缩略等。

4.避免ANR 不要再ui线程做耗时操作。

你可能感兴趣的:(UI卡顿)