上QQ阅读APP看书,第一时间看更新
2.1.3 卡顿的根本原因
那卡顿的根本原因是什么呢,从Android系统的显示原理中可以看到,影响绘制的根本原因有以下两方面:
□ 绘制任务太重,绘制一帧内容耗时太长。
□ 主线程太忙了,导致VSync信号来时还没有准备好数据导致丢帧。
耗时太长,需要从UI布局和绘制上来具体分析,详见后面内容。这里我们主要讨论下第二个方面。我们知道所有的绘制工作都是由主线程,也就是UI线程来负责,主线程的关键职责是处理用户交互,在屏幕上绘制像素,并进行加载显示相关的数据。在Android应用开发中,特别需要避免任何阻碍主线程的事情,这样应用程序才能保持对用户操作的即时响应。
在实际的开发过程中,我们需要知道主线程应该做什么,总结起来主线程主要做以下几个方面的工作:
□ UI生命周期控制
□ 系统事件处理
□ 消息处理
□ 界面布局
□ 界面绘制
□ 界面刷新
除了这些以外,尽量避免将其他处理放到主线程中,特别是复杂的数据计算和网络请求。