1、原理
60fps -> 16ms (每秒60帧, 1000 / 60 = 16)
overdraw (多层次UI 某一帧被绘制多次)
2、原因分析
1)人为在UI线程中做轻微耗时操作,导致UI线程卡顿
2)布局Layout过于复杂,无法在16ms内完成渲染
3)同一时间动画执行的次数过多,导致CPU或GPU负载过重
4)View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重
5)View频繁的触发Measure、Layout,导致Measure、Layout累计耗时过多及整个view频繁的重新渲染
6)内存频繁触发gc过多,导致暂时阻塞渲染操作
7)冗余资源及逻辑等导致加载和执行缓慢
8)ANR
3、总结
1)布局优化
gone替代invisible
weight替代width height
使用自定义view,减少5)
2)列表及Adapter优化
滑动过程中不加载图片,停止才加载
3)背景和图片等内存分配优化
4)避免anr
网友评论