Android应用性能优化最佳实践
上QQ阅读APP看书,第一时间看更新

2.1.3 卡顿的根本原因

那卡顿的根本原因是什么呢,从Android系统的显示原理中可以看到,影响绘制的根本原因有以下两方面:

□ 绘制任务太重,绘制一帧内容耗时太长。

□ 主线程太忙了,导致VSync信号来时还没有准备好数据导致丢帧。

耗时太长,需要从UI布局和绘制上来具体分析,详见后面内容。这里我们主要讨论下第二个方面。我们知道所有的绘制工作都是由主线程,也就是UI线程来负责,主线程的关键职责是处理用户交互,在屏幕上绘制像素,并进行加载显示相关的数据。在Android应用开发中,特别需要避免任何阻碍主线程的事情,这样应用程序才能保持对用户操作的即时响应。

在实际的开发过程中,我们需要知道主线程应该做什么,总结起来主线程主要做以下几个方面的工作:

□ UI生命周期控制

□ 系统事件处理

□ 消息处理

□ 界面布局

□ 界面绘制

□ 界面刷新

除了这些以外,尽量避免将其他处理放到主线程中,特别是复杂的数据计算和网络请求。